Mailchimp MCP Server
The Mailchimp MCP Server provides 33 tools for comprehensive management of Mailchimp marketing operations through MCP-compatible clients like Claude Desktop, Claude Code, and Cursor.
Account
Validate your API key and retrieve account info (name, email, total subscribers)
Campaigns
List, retrieve, create, update, send, schedule, replicate, and send test emails for campaigns
Supports campaign types: regular, plaintext, A/B split, and RSS
Campaign Content
Get and set a campaign's HTML and plain-text content via custom HTML or a template
Reports
Get performance reports (opens, clicks, bounces, unsubscribes)
Get click details (which URLs were clicked and how often)
Get open details (which subscribers opened and when)
Audiences
List all audiences, get detailed info and stats for a specific audience, and create new ones
Members
List, filter, retrieve, add/update (upsert), archive, and search subscribers
Get recent activity for a subscriber (opens, clicks, bounces)
Tags
List all tags for an audience and add/remove tags on individual subscribers
Segments
List saved segments, get members in a segment, and create static segments from email addresses
Templates
List available email templates and retrieve their details and HTML content
Automations
List classic automation workflows and pause or start them
Provides comprehensive tools for the Mailchimp Marketing API, allowing management of email campaigns, audiences, subscriber lists, tags, segments, templates, reports, and automations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Mailchimp MCP Server Show me the performance report for my last campaign"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-mailchimp
Production-grade MCP server for the Mailchimp Marketing API. 71 tools covering campaigns, audiences, members, tags, segments, templates, reports, automations, webhooks, merge fields, interest groups, landing pages, batch operations, e-commerce, A/B testing, member notes, file manager, and audience analytics.
Built for Claude Desktop, Claude Code, Cursor, and any MCP-compatible client.
Quick Start
1. Install
pip install mcp-mailchimpOr from source:
git clone https://github.com/AlexlaGuardia/mcp-mailchimp.git
cd mcp-mailchimp
pip install .2. Get Your API Key
Log in to Mailchimp
Go to Account & Billing > Extras > API Keys
Click Create A Key
Copy the key (format:
xxxxxxxxxx-usXX)
3. Configure Your Client
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"mailchimp": {
"command": "mcp-mailchimp",
"env": {
"MAILCHIMP_API_KEY": "your-api-key-here"
}
}
}
}Claude Code:
claude mcp add mailchimp -- env MAILCHIMP_API_KEY=your-key mcp-mailchimpCursor (.cursor/mcp.json):
{
"mcpServers": {
"mailchimp": {
"command": "mcp-mailchimp",
"env": {
"MAILCHIMP_API_KEY": "your-api-key-here"
}
}
}
}Or run directly:
MAILCHIMP_API_KEY=your-key mcp-mailchimpRelated MCP server: mcp-mautic
Tools (71)
Account (1)
Tool | Description |
| Validate API key and get account info |
Campaigns (11)
Tool | Description |
| List campaigns with status/audience filters |
| Get campaign details (settings, tracking, recipients) |
| Create a new email campaign |
| Update campaign settings (subject, from_name, etc.) |
| Send a campaign immediately |
| Schedule a campaign for a specific time |
| Unschedule a scheduled campaign |
| Cancel a campaign currently sending |
| Permanently delete a draft campaign |
| Copy an existing campaign |
| Send test email to specified addresses |
Campaign Content (2)
Tool | Description |
| Get campaign HTML and plain-text content |
| Set content via HTML or template |
Reports (5)
Tool | Description |
| Performance report (opens, clicks, bounces, unsubscribes) |
| Click details -- which URLs were clicked and how often |
| Open details -- which subscribers opened and when |
| Unsubscribe details -- who left and why |
| Delivery details -- recipient status (sent, bounced) |
Audiences (4)
Tool | Description |
| List all audiences with subscriber counts |
| Get audience details and stats |
| Create a new audience/list |
| Update audience settings |
Audience Analytics (3)
Tool | Description |
| Monthly growth history -- subscribes, unsubscribes, net change |
| Subscriber location breakdown by country/region |
| Email domain performance -- Gmail, Outlook, Apple Mail breakdown |
Members (8)
Tool | Description |
| List/filter audience members by status |
| Get subscriber details by email |
| Add new subscriber or update existing (upsert) |
| Archive (soft-delete) a subscriber |
| Permanently delete a subscriber (irreversible) |
| Batch subscribe up to 500 members at once |
| Search members across all audiences |
| Recent subscriber activity (opens, clicks, etc.) |
Member Notes (2)
Tool | Description |
| List CRM-style notes on a subscriber |
| Add a note to a subscriber |
Tags (2)
Tool | Description |
| List all tags for an audience |
| Add or remove tags on a subscriber |
Segments (5)
Tool | Description |
| List saved segments for an audience |
| List members in a segment |
| Create a static segment from email addresses |
| Update segment name or add/remove members |
| Delete a segment |
Merge Fields (2)
Tool | Description |
| List custom fields (FNAME, LNAME, custom) |
| Create a custom merge field (text, number, date, etc.) |
Interest Categories & Groups (2)
Tool | Description |
| List interest groups (checkboxes, dropdowns, radios) |
| List individual options within a category |
Templates (4)
Tool | Description |
| List available email templates |
| Get template details and HTML content |
| Create a new template from HTML |
| Delete a custom template |
Automations (5)
Tool | Description |
| List classic automations |
| Get automation details and trigger info |
| List all emails in an automation workflow |
| Pause all emails in a workflow |
| Start all emails in a workflow |
Webhooks (3)
Tool | Description |
| List webhooks for an audience |
| Create a webhook for audience events |
| Delete a webhook |
E-Commerce (6)
Tool | Description |
| List connected stores (Shopify, WooCommerce, etc.) |
| List products in a connected store |
| List orders -- filter by campaign for revenue attribution |
| Get customer details with order count and total spent |
| List abandoned carts for recovery campaigns |
| List promo codes for a promo rule |
A/B Testing (1)
Tool | Description |
| Get variate campaign results -- which combination won |
Landing Pages (2)
Tool | Description |
| List landing pages with visit/conversion stats |
| Get landing page details and tracking data |
File Manager (2)
Tool | Description |
| List files in the Mailchimp file manager |
| Upload a file (base64-encoded) |
Batch Operations (1)
Tool | Description |
| Submit up to 500 API operations in a single batch |
Examples
"What campaigns have I sent recently?"
Uses
list_campaignswithstatus=sentto show recent campaigns with open/click stats.
"How has my audience grown this quarter?"
Uses
get_audience_growthto show monthly subscribe/unsubscribe trends.
"Which campaign drove the most revenue?"
Uses
list_store_orderswithcampaign_idto see revenue attribution per campaign.
"Show me abandoned carts from my Shopify store"
Uses
list_store_cartsto find recovery opportunities.
"Add a note to john@example.com that he called about pricing"
Uses
add_member_notefor CRM-style contact management.
"What A/B test subject line won?"
Uses
get_ab_test_resultsto see which variant performed best.
"Where are my subscribers located?"
Uses
get_audience_locationsfor geographic breakdown.
Requirements
Python 3.10+
Mailchimp account with API key
MCP-compatible client (Claude Desktop, Claude Code, Cursor, etc.)
Development
git clone https://github.com/AlexlaGuardia/mcp-mailchimp.git
cd mcp-mailchimp
pip install -e ".[dev]"
pytestLicense
MIT
Available Tools
71 toolsadd_member_noteB
Add a note to a subscriber — useful for CRM-style contact management.
Inputs: list_id (required), email (required), note (required). Returns: result
add_or_update_memberA
Add a new subscriber or update if exists (upsert). Status: subscribed, pending, unsubscribed. Tags: comma-separated.
Inputs: list_id (required), email (required), status, first_name, +2 more. Returns: result
archive_memberA
Archive (soft-delete) a subscriber. They can be re-added later via add_or_update_member.
Inputs: list_id (required), email (required). Returns: result
batch_subscribe_membersA
Batch subscribe multiple members at once. emails: comma-separated list (max 500).
Inputs: list_id (required), emails (required), status. Returns: result
cancel_campaignA
Cancel a campaign that is currently sending. Only works during the send window.
Inputs: campaign_id (required). Returns: result
create_audienceC
Create a new audience/list. Requires name, sender email, and company name.
Inputs: name (required), from_email (required), company (required), permission_reminder, +2 more. Returns: result
create_batch_operationB
Submit a batch of API operations. operations: JSON array of {method, path, body} objects. Max 500 ops.
Inputs: operations (required). Returns: result
create_campaignC
Create a new email campaign. Returns the campaign ID. Type: regular, plaintext, absplit, rss.
Inputs: list_id (required), subject_line (required), from_name (required), reply_to (required), +3 more. Returns: result
create_merge_fieldC
Create a custom merge field. field_type: text, number, address, phone, date, url, dropdown, radio, birthday.
Inputs: list_id (required), name (required), field_type, tag, +2 more. Returns: result
create_segmentB
Create a static segment from email addresses. emails: comma-separated list.
Inputs: list_id (required), name (required), emails. Returns: result
create_templateB
Create a new email template from HTML content.
Inputs: name (required), html (required). Returns: result
create_webhookC
Create a webhook for audience events. Configure which events trigger the callback.
Inputs: list_id (required), url (required), subscribe, unsubscribe, +3 more. Returns: result
delete_campaignA
Permanently delete a campaign. Only works on campaigns that haven't been sent.
Inputs: campaign_id (required). Returns: result
delete_member_permanentA
Permanently delete a subscriber. Cannot be undone — the contact cannot be re-imported.
Inputs: list_id (required), email (required). Returns: result
delete_segmentC
Delete a segment from an audience.
Inputs: list_id (required), segment_id (required). Returns: result
delete_templateA
Delete a custom email template. Cannot delete Mailchimp's built-in templates.
Inputs: template_id (required). Returns: result
delete_webhookC
Delete a webhook from an audience.
Inputs: list_id (required), webhook_id (required). Returns: result
get_ab_test_resultsB
Get A/B test (variate) results for a campaign — which combination won and performance of each.
Inputs: campaign_id (required). Returns: result
get_audienceC
Get detailed info and stats for a specific audience.
Inputs: list_id (required). Returns: result
get_audience_growthB
Get monthly audience growth history — subscribes, unsubscribes, and net change over time.
Inputs: list_id (required), count. Returns: result
get_audience_locationsC
Get subscriber location breakdown by country/region — where your audience lives.
Inputs: list_id (required), count. Returns: result
get_automationB
Get details for a specific automation including trigger, recipients, and stats.
Inputs: workflow_id (required). Returns: result
get_campaignA
Get full details for a specific campaign including settings, tracking, and recipient info.
Inputs: campaign_id (required). Returns: result
get_campaign_contentA
Get the HTML and plain-text content of a campaign.
Inputs: campaign_id (required). Returns: result
get_campaign_reportA
Get performance report for a sent campaign — opens, clicks, bounces, unsubscribes, and more.
Inputs: campaign_id (required). Returns: result
get_click_reportB
Get click details for a campaign — which URLs were clicked and how many times.
Inputs: campaign_id (required), count. Returns: result
get_ecommerce_customerB
Get e-commerce customer details including order count and total spent.
Inputs: store_id (required), customer_id (required). Returns: result
get_email_client_statsB
Get email client usage for a campaign — Gmail, Apple Mail, Outlook breakdown.
Inputs: campaign_id (required). Returns: result
get_landing_pageA
Get details for a specific landing page including tracking stats.
Inputs: page_id (required). Returns: result
get_memberB
Get details for a specific subscriber by email address.
Inputs: list_id (required), email (required). Returns: result
get_member_activityB
Get recent activity for a subscriber — opens, clicks, bounces, etc.
Inputs: list_id (required), email (required), count. Returns: result
get_open_reportC
Get open details for a campaign — which subscribers opened and when.
Inputs: campaign_id (required), count, offset. Returns: result
get_segment_membersC
List members in a specific segment.
Inputs: list_id (required), segment_id (required), count, offset. Returns: result
get_sent_to_reportA
Get delivery details — which members received the email and their status (sent, hard, soft).
Inputs: campaign_id (required), status, count, offset. Returns: result
get_templateB
Get a template's details and HTML content.
Inputs: template_id (required). Returns: result
get_unsubscribe_reportB
Get unsubscribe details for a campaign — who unsubscribed and why.
Inputs: campaign_id (required), count, offset. Returns: result
list_audiencesB
List all audiences (mailing lists) with subscriber counts and stats.
Inputs: count, offset. Returns: result
list_automation_emailsA
List all emails in an automation workflow with their status, delay, and position.
Inputs: workflow_id (required). Returns: result
list_automationsC
List classic automations with status and stats.
Inputs: count, offset. Returns: result
list_campaignsB
List email campaigns. Filter by status (save, paused, schedule, sending, sent) or audience list_id.
Inputs: status, list_id, count, offset. Returns: result
list_ecommerce_storesB
List connected e-commerce stores (Shopify, WooCommerce, etc.) with revenue stats.
Inputs: count. Returns: result
list_filesA
List files in the Mailchimp file manager. Filter by file_type: image, file.
Inputs: count, offset, file_type. Returns: result
list_interest_categoriesC
List interest categories (groups) for an audience — checkboxes, dropdowns, radio buttons, etc.
Inputs: list_id (required). Returns: result
list_interestsA
List interests (individual options) within a category — the actual checkbox/radio items.
Inputs: list_id (required), category_id (required), count. Returns: result
list_landing_pagesC
List landing pages with their status, visits, and conversion stats.
Inputs: count. Returns: result
list_member_notesB
List notes on a subscriber — internal CRM-style notes attached to a contact.
Inputs: list_id (required), email (required), count. Returns: result
list_membersB
List members of an audience. Filter by status: subscribed, unsubscribed, cleaned, pending, transactional.
Inputs: list_id (required), status, count, offset. Returns: result
list_merge_fieldsB
List merge fields (custom fields) for an audience — FNAME, LNAME, plus any custom ones.
Inputs: list_id (required), count. Returns: result
list_segmentsC
List saved segments for an audience.
Inputs: list_id (required), count, offset. Returns: result
list_store_cartsB
List abandoned carts from a connected store — useful for abandoned cart recovery campaigns.
Inputs: store_id (required), count. Returns: result
list_store_ordersB
List orders from a connected store. Optionally filter by campaign_id to see revenue attribution.
Inputs: store_id (required), count, offset, campaign_id. Returns: result
list_store_productsC
List products in a connected e-commerce store.
Inputs: store_id (required), count, offset. Returns: result
list_store_promo_codesC
List promo codes for a specific promo rule in a connected store.
Inputs: store_id (required), promo_rule_id (required), count. Returns: result
list_tagsC
List all tags for an audience.
Inputs: list_id (required). Returns: result
list_templatesC
List available email templates.
Inputs: count, offset. Returns: result
list_webhooksC
List webhooks configured for an audience.
Inputs: list_id (required). Returns: result
manage_member_tagsB
Add or remove tags on a subscriber. Provide comma-separated tag names for add_tags and/or remove_tags.
Inputs: list_id (required), email (required), add_tags, remove_tags. Returns: result
pause_automationC
Pause all emails in a classic automation workflow.
Inputs: workflow_id (required). Returns: result
pingA
Validate your Mailchimp API key and get account info (name, email, total subscribers).
Inputs: no named parameters. Returns: result
replicate_campaignC
Create a copy of an existing campaign. Returns the new campaign ID.
Inputs: campaign_id (required). Returns: result
schedule_campaignB
Schedule a campaign. schedule_time must be ISO 8601 UTC (e.g. '2026-04-01T14:00:00+00:00').
Inputs: campaign_id (required), schedule_time (required). Returns: result
search_membersA
Search for members by email or name across all audiences (or a specific one).
Inputs: query (required), list_id. Returns: result
send_campaignA
Send a campaign immediately. The campaign must be in 'save' status with content set.
Inputs: campaign_id (required). Returns: result
send_test_emailB
Send a test email for a campaign. test_emails: comma-separated addresses (max 5).
Inputs: campaign_id (required), test_emails (required). Returns: result
set_campaign_contentA
Set campaign content. Provide html for custom content, or template_id to use a template.
Inputs: campaign_id (required), html, plain_text, template_id. Returns: result
start_automationC
Start all emails in a classic automation workflow.
Inputs: workflow_id (required). Returns: result
unschedule_campaignB
Unschedule a scheduled campaign, returning it to 'save' status.
Inputs: campaign_id (required). Returns: result
update_audienceC
Update audience settings. Only provide fields you want to change.
Inputs: list_id (required), name, from_email, from_name, +1 more. Returns: result
update_campaignB
Update campaign settings. Only provide fields you want to change.
Inputs: campaign_id (required), subject_line, from_name, reply_to, +2 more. Returns: result
update_segmentA
Update a static segment — rename or add/remove members. emails: comma-separated.
Inputs: list_id (required), segment_id (required), name, emails_to_add, +1 more. Returns: result
upload_fileC
Upload a file to the Mailchimp file manager. file_data_base64: base64-encoded file content.
Inputs: name (required), file_data_base64 (required), folder_id. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 71 tools
Most tools are clearly distinct, but a few pairs like search_members vs list_members or manage_member_tags vs batch_subscribe_members could cause confusion if descriptions are not carefully read. Descriptions generally help disambiguate.
All tool names follow a consistent verb_noun pattern with underscores, e.g., create_audience, list_members, get_campaign. No mixing of conventions or irregular naming.
71 tools is high, but Mailchimp's API is extensive covering many domains (audiences, campaigns, automation, e-commerce, templates, etc.). The count feels slightly heavy but each tool seems justified for a comprehensive server.
Covers a wide range of operations including CRUD for most resources, reports, e-commerce, and batch operations. Missing a few delete operations (e.g., delete_audience, delete_automation, delete_landing_page) but major workflows are covered.
Maintenance
Related MCP Connectors
Mailchimp MCP Pack — manage audiences, campaigns, and members via Mailchimp Marketing API.
Hosted Mailchimp MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Official remote MCP server of MailSenpai, the EU-hosted email marketing platform. Connect Claude, ChatGPT, Cursor or another MCP client with OAuth 2.1 and PKCE. 74 tools manage lists, subscribers, segments, templates, draft campaigns and stats, and check email DNS, blacklists and spam. Sends and deletions require explicit confirmation; every call is logged. The same team also offers SMTP Senpai, an SMTP relay and email API for transactional sending: https://en.mailsenpai.com/smtp-senpai/.
Marketing intelligence MCP server providing campaign performance data and analytics tools.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that interfaces with the Mailchimp Marketing API to manage audiences, email campaigns, and subscribers. It enables users to create and schedule campaigns, handle member lists, and send test or live emails through natural language commands.1331 npmMIT
- AlicenseNot gradedqualityFmaintenanceComprehensive MCP server for the Mautic marketing automation API, providing 203 tools for managing contacts, campaigns, emails, segments, and more.2ISC
- AlicenseAqualityDmaintenanceA hybrid Mailchimp MCP server with 12 tools: 10 native tools for common email workflows plus search and execute to access all 282 Mailchimp Marketing API endpoints on demand.1231 npmMIT
- FlicenseBqualityDmaintenanceMCP server for Mailchimp Marketing API v3 with 72 tools covering audiences, campaigns, templates, reports, and more.72-