Mailchimp MCP

從 Claude 完全控制 Mailchimp——53 個工具,涵蓋受眾、行銷活動、自動化等功能。

文件

Mailchimp MCP Server

CI PyPI version PyPI downloads License: MIT Python 3.10+ MCP

The most complete Model Context Protocol (MCP) server for the Mailchimp Marketing API: 227 tools to query and manage your Mailchimp account from any MCP-compatible client. It covers the full campaign, audience, member, segment, automation and reporting surface, complete e-commerce (read and write), landing pages, File Manager, surveys, signup forms and verified domains, plus multi-account support and runtime-security guardrails (read-only, dry-run and audit modes, with per-tool risk metadata).

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.

Mailchimp MCP server Mailchimp MCP server score

Quick start

uvx mailchimp-mcp   # no install required; just needs MAILCHIMP_API_KEY

Add it to your MCP client (Claude Desktop, Cursor, Cline, …):

{
  "mcpServers": {
    "mailchimp": {
      "command": "uvx",
      "args": ["mailchimp-mcp"],
      "env": {
        "MAILCHIMP_API_KEY": "your-key-us8",
        "MAILCHIMP_READ_ONLY": "true"
      }
    }
  }
}

Tip: start with MAILCHIMP_READ_ONLY=true to explore safely, then flip it off when you are ready to write. See Configuration for all options.

Demo

Demo recording coming soon. A short clip showing a live session lands here (contributions welcome).

A typical exchange:

You: Which of my last 5 campaigns had the worst click rate, and what does Mailchimp suggest to fix it?

Assistant: (chains list_campaignsget_campaign_report for each → get_campaign_advice) Your "March Digest" had the lowest click rate at 1.2%. Mailchimp suggests tightening the subject line and moving your primary CTA above the fold…

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
  • File Manager - Browse stored images and files, and folders
  • Surveys - List and inspect an audience's surveys
  • Signup forms - Inspect an audience's signup forms
  • 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
  • File Manager - Upload (base64) and delete images and files
  • Surveys - Publish and unpublish audience surveys
  • Signup forms - Customize header, contents, and styles
  • 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

Runtime security

  • Risk metadata - Per-tool read / write / destructive classification via MCP annotations and describe_tools
  • Audit log - Optional structured JSON audit events per dispatch (MAILCHIMP_AUDIT_LOG)
  • Argument validation - Pagination caps and required-ID checks before every request

Prerequisites

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

VariableRequiredDescription
MAILCHIMP_API_KEYYesYour Mailchimp API key (format: <key>-<dc>, e.g. abc123-us8)
MAILCHIMP_READ_ONLYNoSet to true to disable all write operations (default: false)
MAILCHIMP_DRY_RUNNoSet to true to preview write operations without executing them (default: false)
MAILCHIMP_API_KEY_<NAME>NoAPI 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>NoRead-only mode for a specific named account (default: false)
MAILCHIMP_DRY_RUN_<NAME>NoDry-run mode for a specific named account (default: false)
MAILCHIMP_AUDIT_LOGNoSet to true to emit a structured JSON audit event per tool dispatch to stderr (default: false). See Runtime security.

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, and its risk tier) without making any API call. Useful for testing prompts before going live.

Runtime security

The server is designed for defense-in-depth alongside an external MCP gateway: it owns the semantics (which tools are reads, reversible writes, or irreversible) and exposes them as machine-readable signals a gateway can enforce on, rather than making the gateway guess which calls are dangerous.

Risk metadata — Every tool is classified as read, write, or destructive (irreversible data loss or an irreversible send). This surfaces two ways:

  • MCP tool annotationsreadOnlyHint, destructiveHint, and idempotentHint travel through the standard tools/list, so any compliant client or gateway reads them directly.
  • describe_tools — a read tool returning {name, risk, read_only, destructive, idempotent} for every tool plus per-tier counts, for gateways that prefer a tool call.

Structured audit log — With MAILCHIMP_AUDIT_LOG=true, each dispatch emits one JSON event to stderr with the tool, its risk tier, the destructive flag, the target account, the outcome (executed / blocked_read_only / dry_run), and the inspected arguments. Bulky or sensitive values (e.g. base64 file_data) are redacted and response bodies are never logged, so the stream is a safe audit sink to tail centrally.

Argument-contract validation — All writes funnel through a single _guard_write chokepoint, and every request is validated before dispatch (pagination count capped to 1–1000, missing path IDs rejected), so malformed calls fail fast and consistently instead of hitting the API.

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_MARKETINGmarketing).

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.

Available Tools

Account

ToolDescription
get_account_infoGet account name, email, and subscriber count
list_accountsList configured accounts and their read-only / dry-run state (for multi-account setups)
describe_toolsList every tool with its risk tier (read / write / destructive) for policy enforcement

Campaigns (read)

ToolDescription
list_campaignsList campaigns with optional filters (status, date)
get_campaign_detailsGet full details of a specific campaign
list_campaign_foldersList campaign folders

Campaign Reports

ToolDescription
get_campaign_reportGet performance metrics (opens, clicks, bounces)
get_campaign_click_detailsGet per-link click data for a campaign
get_email_activityPer-recipient activity (opens, clicks, bounces)
get_open_detailsWho opened, when, how many times
get_campaign_recipientsList of recipients with delivery status
get_campaign_unsubscribesWho unsubscribed after a campaign
get_domain_performancePerformance by email domain (gmail, outlook, etc.)
get_ecommerce_product_activityRevenue per product for a campaign
get_campaign_sub_reportsSub-reports (A/B tests, RSS, etc.)
get_campaign_adviceMailchimp's automated post-send feedback on a campaign
get_campaign_locationsGeographic open data (country, region)
get_eepurl_activitySocial sharing stats (Twitter, Facebook, referrers)

Campaigns (write)

ToolDescription
create_campaignCreate a new campaign draft (regular or A/B variate, with optional segment targeting)
update_campaignUpdate settings or segment targeting of a campaign
set_campaign_contentSet the HTML content of a campaign draft
schedule_campaignSchedule a campaign for a specific date/time
unschedule_campaignUnschedule a campaign (back to draft)
replicate_campaignDuplicate an existing campaign
delete_campaignDelete an unsent campaign
send_campaignSend a campaign immediately
send_test_emailSend a test email for a campaign
cancel_sendCancel a campaign that is currently sending

Audiences (read)

ToolDescription
list_audiencesList all audiences with stats
get_audience_detailsGet detailed info for a specific audience
list_audience_membersList members with optional status filter
search_membersSearch members by email or name
get_audience_growth_historyMonthly growth data (subscribes, unsubscribes)

Members (read)

ToolDescription
get_member_activityActivity history of a specific contact
get_member_tagsAll tags assigned to a contact
get_member_eventsCustom events for a contact
list_member_notesList CRM-style internal notes attached to a contact

Members (write)

ToolDescription
add_memberAdd a new contact to an audience
update_memberUpdate a contact's name or status
unsubscribe_memberUnsubscribe a contact
delete_memberPermanently delete a contact
tag_memberAdd or remove tags from a contact
add_member_noteAttach a CRM-style internal note to a contact
update_member_noteUpdate the text of an existing member note
delete_member_noteDelete a member note

Audiences (write)

ToolDescription
batch_subscribeBatch add/update multiple members in an audience
update_audienceUpdate audience settings (name, defaults, permission reminder)
create_audienceCreate a new audience with contact info and campaign defaults
delete_audiencePermanently delete an audience and all its data

Segments & Tags

ToolDescription
list_segmentsList segments and tags for an audience
get_segmentGet segment details including conditions
list_segment_membersList members in a segment
create_segmentCreate a new segment or tag (static or dynamic with conditions)
update_segmentUpdate a segment's name or conditions
delete_segmentDelete a segment or tag
add_members_to_segmentAdd contacts to a segment/tag
remove_members_from_segmentRemove contacts from a segment/tag

Merge Fields

ToolDescription
list_merge_fieldsList custom fields for an audience
create_merge_fieldCreate a new custom field (text, number, dropdown, etc.)
update_merge_fieldUpdate a custom field
delete_merge_fieldDelete a custom field

Interest Categories & Groups

ToolDescription
list_interest_categoriesList interest categories for an audience
create_interest_categoryCreate a new interest category
list_interestsList interests within a category
create_interestCreate a new interest option
delete_interest_categoryDelete an interest category
delete_interestDelete an interest option

Webhooks

ToolDescription
list_webhooksList webhooks for an audience
create_webhookCreate a new webhook
delete_webhookDelete a webhook

Automations & Customer Journeys

ToolDescription
list_automationsList Classic Automation workflows (Customer Journeys are not exposed by Mailchimp's API)
get_automation_emailsList emails in a Classic workflow
get_automation_email_queueView the send queue for an automation email
pause_automationPause all emails in a Classic workflow
start_automationStart/resume all emails in a Classic workflow
trigger_customer_journeyEnroll a contact into a Customer Journey step (the only journey write Mailchimp exposes)
search_automation_campaignsList campaigns emitted by either Classic Automations or Customer Journeys
get_member_journey_eventsFilter a member's activity feed to automation/journey-related events
get_automation_summaryCombined 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

ToolDescription
list_templatesList available email templates
get_templateGet template metadata (name, type, dates, thumbnail)
get_template_default_contentGet template HTML content
create_templateCreate a new email template
update_templateUpdate template name or HTML
delete_templateDelete a user-created template

Landing Pages

ToolDescription
list_landing_pagesList all landing pages
get_landing_pageGet details of a landing page
create_landing_pageCreate a new landing page from a template
update_landing_pageUpdate settings of an existing landing page
delete_landing_pagePermanently delete a landing page
publish_landing_pagePublish a landing page to its public URL
unpublish_landing_pageTake a published landing page offline

File Manager

ToolDescription
list_filesList images and files stored in the File Manager
get_fileGet a single file's metadata and hosted URL
upload_fileUpload a new image or file (base64-encoded)
delete_filePermanently delete a file
list_file_foldersList File Manager folders

Surveys

ToolDescription
list_surveysList an audience's surveys with status and public URL
get_surveyGet a single survey's full details
publish_surveyPublish a survey to its public URL
unpublish_surveyTake a published survey offline

Signup Forms

ToolDescription
list_signup_formsGet the signup forms configured for an audience
customize_signup_formCustomize a signup form's header, contents, and styles

E-commerce

ToolDescription
list_ecommerce_storesList connected e-commerce stores
list_store_ordersList orders from a store
list_store_productsList products from a store
list_store_customersList customers from a store

E-commerce Carts

ToolDescription
list_store_cartsList carts (including abandoned) for a store
get_store_cartGet a single cart with full line items
create_store_cartPush a cart (e.g. an abandoned cart from an external system)
update_store_cartUpdate a cart's totals, currency, checkout URL, or line items
delete_store_cartPermanently delete a cart

E-commerce Promo Rules & Codes

ToolDescription
list_promo_rulesList discount rules for a store
get_promo_ruleGet a single promo rule's configuration
create_promo_ruleCreate a discount rule (fixed amount, percentage, free shipping)
update_promo_ruleUpdate a rule's amount, target, dates, or enabled state
delete_promo_rulePermanently delete a rule and all its codes
list_promo_codesList redeemable codes attached to a rule
get_promo_codeGet a single promo code with usage stats
create_promo_codeCreate a redeemable code (e.g. 'SUMMER20') under a rule
update_promo_codeUpdate a code's string, redemption URL, or enabled state
delete_promo_codePermanently delete a promo code

Batch Operations

ToolDescription
create_batchRun multiple API operations in bulk
get_batch_statusCheck status of a batch operation
list_batchesList recent batch operations
list_batch_webhooksList batch-completion webhooks
get_batch_webhookGet a single batch webhook
create_batch_webhookCreate a batch-completion webhook
update_batch_webhookUpdate a batch webhook's URL
delete_batch_webhookDelete a batch webhook

Verified Domains

ToolDescription
list_verified_domainsList sending domains and their verification state
get_verified_domainGet a single sending domain's record
create_verified_domainStart verification for a sending domain
verify_verified_domainComplete verification with the emailed code
delete_verified_domainRemove a verified sending domain

Connected Sites & Account

ToolDescription
list_connected_sitesList connected sites for tracking and pop-ups
get_connected_siteGet a single connected site with its script
create_connected_siteConnect a website and generate its script
delete_connected_siteRemove a connected site
verify_connected_site_scriptVerify the tracking script is installed
list_authorized_appsList OAuth-authorized applications
get_authorized_appGet a single authorized application
get_chimp_chatterRead the account activity feed
list_account_exportsList account data export jobs
get_account_exportGet an export job's status and download URL
create_account_exportStart an account data export

Folders

ToolDescription
create_campaign_folderCreate a campaign folder
get_campaign_folderGet a single campaign folder
update_campaign_folderRename a campaign folder
delete_campaign_folderDelete a campaign folder
list_template_foldersList template folders
get_template_folderGet a single template folder
create_template_folderCreate a template folder
update_template_folderRename a template folder
delete_template_folderDelete a template folder

Campaign Extras (checklist, collaboration, RSS)

ToolDescription
get_campaign_send_checklistPre-send readiness checklist
list_campaign_feedbackList team collaboration comments
get_campaign_feedbackGet a single comment
create_campaign_feedbackAdd a collaboration comment
update_campaign_feedbackEdit a comment
delete_campaign_feedbackDelete a comment
pause_rss_campaignPause an RSS-driven campaign
resume_rss_campaignResume an RSS-driven campaign

Audience Insights & Deliverability

ToolDescription
get_audience_activityRecent daily activity for an audience
get_audience_top_locationsTop countries of an audience
get_audience_clientsTop email clients used by an audience
list_audience_abuse_reportsSpam complaints for an audience
get_audience_abuse_reportA single audience abuse report

Members (compliance & advanced)

ToolDescription
upsert_memberAdd-or-update a member idempotently (PUT)
delete_member_permanentGDPR permanent erasure of a member
get_member_goalsA member's recent tracked goal events
add_member_eventRecord a custom event on a member

Automation Emails (single-email control)

ToolDescription
get_automation_emailGet one email in a classic automation
pause_automation_emailPause a single automation email
start_automation_emailStart a single automation email
add_automation_queue_subscriberEnqueue a subscriber for an automation email
get_automation_queue_subscriberGet a subscriber's queue status
list_automation_removed_subscribersList subscribers removed from a workflow
remove_automation_subscriberRemove a subscriber from a workflow
get_automation_removed_subscriberGet a single removed subscriber

Reporting (extras)

ToolDescription
get_campaign_sent_toPer-recipient delivery status for a campaign
get_campaign_abuse_reportsSpam complaints for a campaign
get_campaign_abuse_reportA single campaign abuse report
list_landing_page_reportsReports across all landing pages
get_landing_page_reportReport for a single landing page
list_survey_reportsReports across all surveys
get_survey_reportReport for a single survey
get_survey_responsesList a survey's responses
get_survey_responseGet a single survey response
get_survey_questions_reportPer-question survey report
get_survey_question_answersAnswers for a single survey question

E-commerce (write)

ToolDescription
create_store / get_store / update_store / delete_storeStore lifecycle
get_store_product / create_store_product / update_store_product / delete_store_productProduct lifecycle
list_store_product_variants / get_store_product_variant / create_store_product_variant / update_store_product_variant / delete_store_product_variantProduct variants
list_store_product_images / get_store_product_image / create_store_product_image / update_store_product_image / delete_store_product_imageProduct images
get_store_order / create_store_order / update_store_order / delete_store_orderOrder lifecycle
list_store_order_lines / get_store_order_line / create_store_order_line / update_store_order_line / delete_store_order_lineOrder line items
get_store_customer / create_store_customer / update_store_customer / delete_store_customerCustomer lifecycle
list_account_ordersList orders across every store

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"

Workflow recipes

Multi-step requests that chain tools end to end:

  • Weekly performance review"Summarise my last week: list campaigns sent since Monday, pull each report, and rank them by click rate with one takeaway each." Chains search_campaignsget_campaign_reportget_campaign_advice.
  • Deliverability audit"Check my sending health: are my domains verified, any spam complaints on recent campaigns, and how did the last one perform by recipient domain?" Chains list_verified_domainsget_campaign_abuse_reportsget_domain_performance.
  • Re-engagement"Find everyone who didn't open my last newsletter and resend it with a new subject line." Chains get_campaign_reportresend_to_non_openers.
  • Safe send"Dry-run a campaign to my VIP segment, show me the send checklist, then send it once I confirm." With MAILCHIMP_DRY_RUN=true, previews via create_campaignget_campaign_send_checklistsend_campaign.
  • Agencies (multi-account)"For both the acme and globex accounts, list this month's top campaign by open rate." Passes account="acme" / account="globex" per call. See Multi-account.

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.