
Mailchimp MCP
★ 17from damientilman
Full Mailchimp control from Claude - 53 tools for audiences, campaigns, automations and more.
Mailchimp MCP Server
The most complete Model Context Protocol (MCP) server for the Mailchimp Marketing API — 117 tools to query and manage your Mailchimp account from any MCP-compatible client, with A/B campaign support, geographic reporting, full landing-page lifecycle, CRM-style member notes, e-commerce carts and promo codes, Classic Automation + Customer Journey reporting, and read-only / dry-run safety modes.
Uses the Mailchimp Marketing API via requests. Not based on the official mailchimp-marketing-python client. I hit too many issues with it so I went with raw HTTP calls instead.
Features
Read
-
Campaigns - List, search, and inspect campaign details
-
Reports - Open/click rates, bounces, per-link clicks, domain performance, unsubscribe details
-
Email activity - Per-recipient open/click tracking, member activity history
-
Audiences - Browse audiences, members, segments, tags, and growth history
-
Merge fields - List custom fields for an audience
-
Interest categories & groups - Browse interest categories and options
-
Webhooks - List configured webhooks
-
Segments - Get segment details, conditions, and member lists
-
Automations - List workflows, inspect emails in a workflow, view queues
-
Templates - Browse templates and extract HTML content
-
Landing pages - List and inspect landing pages
-
E-commerce - Stores, orders, products, customers (requires e-commerce integration)
-
Campaign folders - Browse folder organization
-
Batch operations - Monitor bulk operation status
Write
-
Members - Add, update, unsubscribe, delete, and tag contacts
-
Audiences - Batch subscribe members, update audience settings
-
Campaigns - Create drafts, set HTML content, schedule, unschedule, duplicate, delete, send, send test, cancel
-
Segments/Tags - Create, update, delete, add/remove members, dynamic conditions
-
Merge fields - Create, update, delete custom fields
-
Interest categories - Create and delete categories and interests
-
Webhooks - Create and delete webhooks
-
Templates - Create, update, and delete email templates
-
Automations - Pause and start automation workflows
-
E-commerce - Cart lifecycle, promo rules, and promo codes for discount workflows
-
Batch - Run bulk API operations in a single request
Available Tools
Account
Tool Description
get_account_info Get account name, email, and subscriber count
list_accounts List configured accounts and their read-only / dry-run state (for multi-account setups)
Campaigns (read)
Tool Description
list_campaigns List campaigns with optional filters (status, date)
get_campaign_details Get full details of a specific campaign
list_campaign_folders List campaign folders
Campaign Reports
Tool Description
get_campaign_report Get performance metrics (opens, clicks, bounces)
get_campaign_click_details Get per-link click data for a campaign
get_email_activity Per-recipient activity (opens, clicks, bounces)
get_open_details Who opened, when, how many times
get_campaign_recipients List of recipients with delivery status
get_campaign_unsubscribes Who unsubscribed after a campaign
get_domain_performance Performance by email domain (gmail, outlook, etc.)
get_ecommerce_product_activity Revenue per product for a campaign
get_campaign_sub_reports Sub-reports (A/B tests, RSS, etc.)
get_campaign_advice Mailchimp's automated post-send feedback on a campaign
get_campaign_locations Geographic open data (country, region)
get_eepurl_activity Social sharing stats (Twitter, Facebook, referrers)
Campaigns (write)
Tool Description
create_campaign Create a new campaign draft (regular or A/B variate, with optional segment targeting)
update_campaign Update settings or segment targeting of a campaign
set_campaign_content Set the HTML content of a campaign draft
schedule_campaign Schedule a campaign for a specific date/time
unschedule_campaign Unschedule a campaign (back to draft)
replicate_campaign Duplicate an existing campaign
delete_campaign Delete an unsent campaign
send_campaign Send a campaign immediately
send_test_email Send a test email for a campaign
cancel_send Cancel a campaign that is currently sending
Audiences (read)
Tool Description
list_audiences List all audiences with stats
get_audience_details Get detailed info for a specific audience
list_audience_members List members with optional status filter
search_members Search members by email or name
get_audience_growth_history Monthly growth data (subscribes, unsubscribes)
Members (read)
Tool Description
get_member_activity Activity history of a specific contact
get_member_tags All tags assigned to a contact
get_member_events Custom events for a contact
list_member_notes List CRM-style internal notes attached to a contact
Members (write)
Tool Description
add_member Add a new contact to an audience
update_member Update a contact's name or status
unsubscribe_member Unsubscribe a contact
delete_member Permanently delete a contact
tag_member Add or remove tags from a contact
add_member_note Attach a CRM-style internal note to a contact
update_member_note Update the text of an existing member note
delete_member_note Delete a member note
Audiences (write)
Tool Description
batch_subscribe Batch add/update multiple members in an audience
update_audience Update audience settings (name, defaults, permission reminder)
create_audience Create a new audience with contact info and campaign defaults
delete_audience Permanently delete an audience and all its data
Segments & Tags
Tool Description
list_segments List segments and tags for an audience
get_segment Get segment details including conditions
list_segment_members List members in a segment
create_segment Create a new segment or tag (static or dynamic with conditions)
update_segment Update a segment's name or conditions
delete_segment Delete a segment or tag
add_members_to_segment Add contacts to a segment/tag
remove_members_from_segment Remove contacts from a segment/tag
Merge Fields
Tool Description
list_merge_fields List custom fields for an audience
create_merge_field Create a new custom field (text, number, dropdown, etc.)
update_merge_field Update a custom field
delete_merge_field Delete a custom field
Interest Categories & Groups
Tool Description
list_interest_categories List interest categories for an audience
create_interest_category Create a new interest category
list_interests List interests within a category
create_interest Create a new interest option
delete_interest_category Delete an interest category
delete_interest Delete an interest option
Webhooks
Tool Description
list_webhooks List webhooks for an audience
create_webhook Create a new webhook
delete_webhook Delete a webhook
Automations & Customer Journeys
Tool Description
list_automations List Classic Automation workflows (Customer Journeys are not exposed by Mailchimp's API)
get_automation_emails List emails in a Classic workflow
get_automation_email_queue View the send queue for an automation email
pause_automation Pause all emails in a Classic workflow
start_automation Start/resume all emails in a Classic workflow
trigger_customer_journey Enroll a contact into a Customer Journey step (the only journey write Mailchimp exposes)
search_automation_campaigns List campaigns emitted by either Classic Automations or Customer Journeys
get_member_journey_events Filter a member's activity feed to automation/journey-related events
get_automation_summary Combined overview: Classic workflows by status + recent automation send volume
Mailchimp does not expose a public read API for Customer Journeys (only the trigger endpoint above). The search_automation_campaigns, get_member_journey_events and get_automation_summary tools provide the recommended workarounds — they surface every campaign emitted by automations or journeys, even though the journey graph itself remains private.
Templates
Tool Description
list_templates List available email templates
get_template Get template metadata (name, type, dates, thumbnail)
get_template_default_content Get template HTML content
create_template Create a new email template
update_template Update template name or HTML
delete_template Delete a user-created template
Landing Pages
Tool Description
list_landing_pages List all landing pages
get_landing_page Get details of a landing page
create_landing_page Create a new landing page from a template
update_landing_page Update settings of an existing landing page
delete_landing_page Permanently delete a landing page
publish_landing_page Publish a landing page to its public URL
unpublish_landing_page Take a published landing page offline
E-commerce
Tool Description
list_ecommerce_stores List connected e-commerce stores
list_store_orders List orders from a store
list_store_products List products from a store
list_store_customers List customers from a store
E-commerce Carts
Tool Description
list_store_carts List carts (including abandoned) for a store
get_store_cart Get a single cart with full line items
create_store_cart Push a cart (e.g. an abandoned cart from an external system)
update_store_cart Update a cart's totals, currency, checkout URL, or line items
delete_store_cart Permanently delete a cart
E-commerce Promo Rules & Codes
Tool Description
list_promo_rules List discount rules for a store
get_promo_rule Get a single promo rule's configuration
create_promo_rule Create a discount rule (fixed amount, percentage, free shipping)
update_promo_rule Update a rule's amount, target, dates, or enabled state
delete_promo_rule Permanently delete a rule and all its codes
list_promo_codes List redeemable codes attached to a rule
get_promo_code Get a single promo code with usage stats
create_promo_code Create a redeemable code (e.g. 'SUMMER20') under a rule
update_promo_code Update a code's string, redemption URL, or enabled state
delete_promo_code Permanently delete a promo code
Batch Operations
Tool Description
create_batch Run multiple API operations in bulk
get_batch_status Check status of a batch operation
list_batches List recent batch operations
Example Prompts
Once connected, you can ask your MCP client to perform requests like:
-
"Show me all my sent campaigns from the last 3 months"
-
"What was the open rate and click rate for my last newsletter?"
-
"How many subscribers did I gain this year?"
-
"Which links got the most clicks in campaign X?"
-
"Search for subscriber [email protected]"
-
"Add tag 'VIP' to all members who opened my last campaign"
-
"Create a draft campaign for my main audience with subject 'March Update'"
-
"Create a campaign targeting only my VIP segment"
-
"Send a test email of my draft campaign to [email protected]"
-
"List all merge fields for my main audience"
-
"Create a dropdown merge field called 'Industry' with options Tech, Finance, Healthcare"
-
"Create a dynamic segment of members where FNAME is John"
-
"Batch subscribe 50 members from this CSV data"
-
"Set up a webhook to notify my app when new subscribers join"
-
"Unsubscribe [email protected] from my list"
-
"Show me the domain performance breakdown for my last campaign"
-
"Where in the world did people open my newsletter? Show me the geographic breakdown."
-
"Create an A/B test campaign with two subject lines and pick the winner by opens after 24 hours"
-
"What advice does Mailchimp have for improving my last campaign?"
-
"Pause my welcome automation"
-
"List all orders from my Shopify store this month"
Contributing
Contributions are welcome. See CONTRIBUTING.md for development setup, test instructions, and pull request guidelines.
Security
If you find a security vulnerability, please follow the responsible disclosure process described in SECURITY.md.
Changelog
See CHANGELOG.md for the full release history.
Author
Built by Damien Tilman — [email protected]
License
MIT — see LICENSE for details.
uvx mailchimp-mcpBefore it works, you'll need: MAILCHIMP_API_KEYMAILCHIMP_API_KEY_MARKETINGMAILCHIMP_READ_ONLY_MARKETING
Prerequisites
-
Python 3.10+
Installation
Using uvx (recommended)
No installation needed — run directly:
uvx mailchimp-mcp
Using pip
pip install mailchimp-mcp
Then run:
mailchimp-mcp
From source
git clone https://github.com/damientilman/mailchimp-mcp-server.git
cd mailchimp-mcp-server
python -m venv .venv
source .venv/bin/activate
pip install -e .
Configuration
Variable Required Description
MAILCHIMP_API_KEY Yes Your Mailchimp API key (format: <key>-<dc>, e.g. abc123-us8)
MAILCHIMP_READ_ONLY No Set to true to disable all write operations (default: false)
MAILCHIMP_DRY_RUN No Set to true to preview write operations without executing them (default: false)
MAILCHIMP_API_KEY_<NAME> No API key for an additional named account (e.g. MAILCHIMP_API_KEY_MARKETING). Target it with the account argument. See Multi-account .
MAILCHIMP_READ_ONLY_<NAME> No Read-only mode for a specific named account (default: false)
MAILCHIMP_DRY_RUN_<NAME> No Dry-run mode for a specific named account (default: false)
The datacenter (us8, us21, etc.) is automatically extracted from each key.
Safety modes
Read-only mode — When MAILCHIMP_READ_ONLY=true, all write tools (create, update, delete, schedule, etc.) are blocked and return an error. Read tools work normally. This is the recommended default for shared or exploratory setups where you only need reporting and analytics.
Dry-run mode — When MAILCHIMP_DRY_RUN=true, write tools return a preview of the action they would perform (tool name, target resource, parameters) without making any API call. Useful for testing prompts before going live.
Multi-account
By default the server uses the single MAILCHIMP_API_KEY, exposed as the default account. To manage several Mailchimp accounts from one server, add MAILCHIMP_API_KEY_<NAME> variables — the suffix becomes the lowercased account name (e.g. MAILCHIMP_API_KEY_MARKETING → marketing).
Every tool then accepts an optional account argument, e.g. list_audiences(account="marketing"). Selection is per call and stateless — there is no "current account" to switch, so a write always names its target. Omitting account uses default. Call list_accounts to see the configured names and their safety-flag state, and each account can carry its own MAILCHIMP_READ_ONLY_<NAME> / MAILCHIMP_DRY_RUN_<NAME> flags (so a write-protected account and a writable one can live side by side). An unknown account returns an error listing the configured names.
Single-key setups are unaffected: with only MAILCHIMP_API_KEY set, nothing changes.
{
"mcpServers": {
"mailchimp": {
"command": "uvx",
"args": ["mailchimp-mcp"],
"env": {
"MAILCHIMP_API_KEY": "your-default-key-us8",
"MAILCHIMP_API_KEY_MARKETING": "another-key-us5",
"MAILCHIMP_READ_ONLY_MARKETING": "true"
}
}
}
}
MCP client configuration
Most MCP clients accept a JSON configuration block describing how to launch the server.
Configure yours to invoke uvx mailchimp-mcp (or mailchimp-mcp if installed via pip)
with MAILCHIMP_API_KEY exported in the environment.
Using uvx (recommended)
{
"mcpServers": {
"mailchimp": {
"command": "uvx",
"args": ["mailchimp-mcp"],
"env": {
"MAILCHIMP_API_KEY": "your-api-key-here"
}
}
}
}
Using pip install
{
"mcpServers": {
"mailchimp": {
"command": "mailchimp-mcp",
"env": {
"MAILCHIMP_API_KEY": "your-api-key-here"
}
}
}
}
Read-only mode (recommended for exploration)
{
"mcpServers": {
"mailchimp": {
"command": "uvx",
"args": ["mailchimp-mcp"],
"env": {
"MAILCHIMP_API_KEY": "your-api-key-here",
"MAILCHIMP_READ_ONLY": "true"
}
}
}
}
CLI-based clients
If your MCP client provides a CLI to register servers, the equivalent invocation is:
mcp-cli add mailchimp \
-e MAILCHIMP_API_KEY=your-api-key-here \
-- uvx mailchimp-mcp
Replace mcp-cli with your client's binary name. For read-only mode, add
-e MAILCHIMP_READ_ONLY=true to the command.
No common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.