@joselmg/mailchimp-mcp-server
v1.3.0
Published
MCP server for Mailchimp Marketing API, with extended campaign analytics tools and campaign creation/scheduling (write) tools. Fork of @agentx-ai/mailchimp-mcp-server.
Maintainers
Readme
Mailchimp MCP Server
This is a fork of AgentX-ai/mailchimp-mcp, all credit for the original server to AgentX. This fork adds 12 read-only campaign analytics tools (who clicked what, who opened, email activity timeline, etc. — see Campaign Analytics) and 7 campaign management (write) tools for creating, editing and scheduling campaigns — see Campaign Creation & Scheduling. An upstream PR is open to merge the analytics tools back into the original.
A Model Context Protocol (MCP) server that provides access to Mailchimp's Marketing API for email marketing data retrieval and campaign creation, editing and scheduling.
Usage
The server can be used with any MCP client. Configure your client to use:
{
"mcpServers": {
"mailchimp": {
"command": "npx",
"args": ["@joselmg/mailchimp-mcp-server"],
"env": {
"MAILCHIMP_API_KEY": "your-api-key-here"
}
}
}
}Features
This MCP server supports the following Mailchimp Marketing API endpoints (read operations, plus campaign draft, content, test-send and scheduling management — no immediate-send tool by design):
Automation Management
Note about automations: These endpoints are for classic automations, not automation flows. Unfortunately those are not available in the Mailchimp API as of yet.
- List Automations - Get all automations in your account
- Get Automation - Retrieve details of a specific automation
Automation Email Management
- List Automation Emails - Get all emails in an automation
- Get Automation Email - Retrieve details of a specific email
Subscriber Management
- List Automation Subscribers - View subscribers in automation queue
- Get Automation Queue - Get the automation email queue
List Management
- List Lists - Get all lists in your account
- Get List - Retrieve details of a specific list
Campaign Management
- List Campaigns - Get all campaigns in your account
- Get Campaign - Retrieve details of a specific campaign
Campaign Creation & Scheduling
- Create Campaign (
create_campaign) - Create a new draft campaign, regular or A/B subject-line test (nothing is sent) - Update Campaign Settings (
update_campaign_settings) - Change subject, sender, reply-to, title or preview text of an unsent campaign - Set Campaign Content (
set_campaign_content) - Set the email body from raw HTML or an existing template - Send Test Email (
send_test_email) - Send a preview to specific addresses only - Schedule Campaign (
schedule_campaign) - Schedule the real send (UTC, quarter-hour boundaries) - Unschedule Campaign (
unschedule_campaign) - Cancel a scheduled send before it goes out - Delete Campaign (
delete_campaign) - Permanently delete an unsent campaign (irreversible)
Draft workflow:
create_campaign→set_campaign_content→send_test_email→schedule_campaign. There is deliberately nosend_campaign(immediate send): scheduling is the only real-send path and stays reversible viaunschedule_campaignuntil the send time.
Member Management
- List Members - Get all members in a specific list
- Get Member - Retrieve details of a specific member
Segment Management
- List Segments - Get all segments in a specific list
- Get Segment - Retrieve details of a specific segment
Template Management
- List Templates - Get all templates in your account
- Get Template - Retrieve details of a specific template
Reports and Analytics
- Get Automation Report - Get automation report data
- Get Automation Email Report - Get automation email report data
- Get Subscriber Activity - Get subscriber activity for an automation email
- List Campaign Reports - Get all campaign reports
- Get Campaign Report - Get detailed report for a specific campaign
Campaign Analytics (person & link level detail)
- Get Click Details (
get_click_details) - Links in a campaign with total/unique clicks - List Link Clickers (
list_link_clickers) - The members who clicked a specific link - Get Open Details (
get_open_details) - The members who opened and how many times - List Email Activity (
list_email_activity) - Per-subscriber timeline of opens, clicks (with URL) and bounces - Get Member Email Activity (
get_member_email_activity) - Activity timeline for one subscriber - Get Report Locations (
get_report_locations) - Opens broken down by geography - Get Domain Performance (
get_domain_performance) - Stats by recipient email domain (gmail, outlook, etc.) - List Sent To (
list_sent_to) - Recipients the campaign was sent to and their status - List Unsubscribed (
list_unsubscribed) - Members who unsubscribed from the campaign - List Abuse Reports (
list_abuse_reports) - Spam complaints for the campaign - Get Advice (
get_advice) - Mailchimp's automated feedback on the campaign - Get E-commerce Product Activity (
get_ecommerce_product_activity) - Revenue/products driven by the campaign
Finding who clicked a link: call
list_campaigns→get_click_details(to get the linkid) →list_link_clickerswith thatlink_id. Member-level tools acceptcount(default 100, max 1000) andoffsetfor pagination.
Account Information
- Get Account - Get account information and statistics
Folder Management
- List Folders - Get all campaign folders
- Get Folder - Retrieve details of a specific folder
File Manager
- List Files - Get all files in the File Manager
- Get File - Retrieve details of a specific file
Landing Pages
- List Landing Pages - Get all landing pages
- Get Landing Page - Retrieve details of a specific landing page
E-commerce
- List Stores - Get all e-commerce stores
- Get Store - Retrieve details of a specific store
- List Products - Get all products in a store
- Get Product - Retrieve details of a specific product
- List Orders - Get all orders in a store
- Get Order - Retrieve details of a specific order
Conversations
- List Conversations - Get all conversations
- Get Conversation - Retrieve details of a specific conversation
Merge Fields
- List Merge Fields - Get all merge fields in a specific list
- Get Merge Field - Retrieve details of a specific merge field
Local Installation
- Clone this repository
- Install dependencies:
npm install - Build the project:
npm run build
Configuration
Set the following environment variable:
MAILCHIMP_API_KEY=your-mailchimp-api-key-hereYour Mailchimp API key should include the data center suffix (e.g., xxxxxxxxxxxxxxxx-us1).
Available Tools
Automation Management
list_automations
Lists all automations in your Mailchimp account.
// No parameters requiredget_automation
Get details of a specific automation by workflow ID.
{
workflow_id: string; // Required: The workflow ID of the automation
}Automation Email Management
list_automation_emails
List all emails in an automation.
{
workflow_id: string; // Required: The workflow ID
}get_automation_email
Get details of a specific email in an automation.
{
workflow_id: string; // Required: The workflow ID
email_id: string; // Required: The email ID
}Subscriber Management
list_automation_subscribers
List subscribers in an automation email queue.
{
workflow_id: string; // Required: The workflow ID
email_id: string; // Required: The email ID
}get_automation_queue
Get the automation email queue.
{
workflow_id: string; // Required: The workflow ID
email_id: string; // Required: The email ID
}List Management
list_lists
List all lists in your Mailchimp account.
// No parameters requiredget_list
Get details of a specific list.
{
list_id: string; // Required: The list ID
}Campaign Management
list_campaigns
List all campaigns in your Mailchimp account.
// No parameters requiredget_campaign
Get details of a specific campaign.
{
campaign_id: string; // Required: The campaign ID
}Campaign Creation & Scheduling
Write tools for managing campaign drafts. There is deliberately no immediate-send tool: schedule_campaign is the only path to a real audience send, and it can be cancelled with unschedule_campaign until the send time.
create_campaign
Create a new draft campaign (status save). Nothing is sent. Pass subject_line_b to create an A/B (variate) subject-line test instead of a regular campaign.
{
list_id: string; // Required: Audience/list ID (from list_lists)
subject_line: string; // Required: Email subject line (variant A in A/B mode)
from_name: string; // Required: Sender name
reply_to: string; // Required: Reply-to address (verified domain)
title?: string; // Optional: Internal campaign title
preview_text?: string; // Optional: Inbox preview/preheader text
type?: "regular" | "plaintext"; // Optional: default "regular"; ignored with subject_line_b
saved_segment_id?: number; // Optional: narrow recipients to a saved segment
// A/B (variate) subject-line test:
subject_line_b?: string; // Variant B subject — presence makes the campaign variate
test_size?: number; // % of audience for the test (10-100, default 25)
winner_criteria?: "opens" | "clicks" | "manual" | "total_revenue"; // default "opens"
wait_time?: number; // Minutes before sending the winner (whole hours, default 240)
}update_campaign_settings
Update settings of an unsent campaign. Only the provided fields are changed.
{
campaign_id: string; // Required: The campaign ID
subject_line?: string; // Optional
preview_text?: string; // Optional
title?: string; // Optional
from_name?: string; // Optional
reply_to?: string; // Optional
}set_campaign_content
Set the email body of a draft campaign. Provide either html or template_id, not both.
{
campaign_id: string; // Required: The campaign ID
html?: string; // Raw HTML for the email body
plain_text?: string; // Optional plaintext alternative (only with html)
template_id?: number; // Template to use instead of raw html
}send_test_email
Send a test/preview to specific addresses only — the audience is not contacted. Regular/plaintext campaigns only: the API rejects A/B (variate) campaigns (preview those in the Mailchimp UI).
{
campaign_id: string; // Required: The campaign ID
test_emails: string[]; // Required: Addresses to receive the test
send_type?: "html" | "plaintext"; // Optional: default "html"
}schedule_campaign
Schedule a real send to the campaign's full audience. schedule_time must be ISO 8601 UTC, in the future, on a quarter-hour boundary (:00, :15, :30, :45). Reversible with unschedule_campaign until the send time.
{
campaign_id: string; // Required: The campaign ID
schedule_time: string; // Required: e.g. "2026-07-15T16:15:00+00:00"
}unschedule_campaign
Cancel a scheduled send; the campaign ends up in paused status and can be re-scheduled or deleted. Also required before re-scheduling an already scheduled campaign to a new time.
{
campaign_id: string; // Required: The campaign ID
}delete_campaign
Permanently and irreversibly delete a campaign. Only works on unsent campaigns; scheduled campaigns must be unscheduled first.
{
campaign_id: string; // Required: The campaign ID to delete
}Member Management
list_members
List all members in a specific list.
{
list_id: string; // Required: The list ID
}get_member
Get details of a specific member.
{
list_id: string; // Required: The list ID
subscriber_hash: string; // Required: The subscriber hash
}Segment Management
list_segments
List all segments in a specific list.
{
list_id: string; // Required: The list ID
}get_segment
Get details of a specific segment.
{
list_id: string; // Required: The list ID
segment_id: number; // Required: The segment ID
}Template Management
list_templates
List all templates in your Mailchimp account.
// No parameters requiredget_template
Get details of a specific template.
{
template_id: number; // Required: The template ID
}Reports and Analytics
get_automation_report
Get automation report data.
{
workflow_id: string; // Required: The workflow ID
}get_automation_email_report
Get automation email report data.
{
workflow_id: string; // Required: The workflow ID
email_id: string; // Required: The email ID
}get_subscriber_activity
Get subscriber activity for an automation email.
{
workflow_id: string; // Required: The workflow ID
email_id: string; // Required: The email ID
subscriber_hash: string; // Required: The subscriber hash
}list_campaign_reports
List all campaign reports.
// No parameters requiredget_campaign_report
Get detailed report for a specific campaign.
{
campaign_id: string; // Required: The campaign ID
}Account Information
get_account
Get account information.
// No parameters requiredFolder Management
list_folders
List all campaign folders.
// No parameters requiredget_folder
Get details of a specific folder.
{
folder_id: string; // Required: The folder ID
}File Manager
list_files
List all files in the File Manager.
// No parameters requiredget_file
Get details of a specific file.
{
file_id: string; // Required: The file ID
}Landing Pages
list_landing_pages
List all landing pages.
// No parameters requiredget_landing_page
Get details of a specific landing page.
{
page_id: string; // Required: The landing page ID
}E-commerce
list_stores
List all e-commerce stores.
// No parameters requiredget_store
Get details of a specific store.
{
store_id: string; // Required: The store ID
}list_products
List all products in a store.
{
store_id: string; // Required: The store ID
}get_product
Get details of a specific product.
{
store_id: string; // Required: The store ID
product_id: string; // Required: The product ID
}list_orders
List all orders in a store.
{
store_id: string; // Required: The store ID
}get_order
Get details of a specific order.
{
store_id: string; // Required: The store ID
order_id: string; // Required: The order ID
}Conversations
list_conversations
List all conversations.
// No parameters requiredget_conversation
Get details of a specific conversation.
{
conversation_id: string; // Required: The conversation ID
}Merge Fields
list_merge_fields
List all merge fields in a specific list.
{
list_id: string; // Required: The list ID
}get_merge_field
Get details of a specific merge field.
{
list_id: string; // Required: The list ID
merge_field_id: number; // Required: The merge field ID
}Development
Building
npm run buildTesting
npm testDevelopment Mode
npm run watchInspector
npm run inspectorAPI Reference
This MCP server implements read operations plus campaign creation/scheduling write operations from the Mailchimp Marketing API v3. For detailed API documentation, visit: https://mailchimp.com/developer/marketing/api/
License
This project is licensed under the MIT License.
