Skip to main content
Glama
Mailchimp MCP Server

Mailchimp MCP Server

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-mailchimp

Or from source:

git clone https://github.com/AlexlaGuardia/mcp-mailchimp.git
cd mcp-mailchimp
pip install .

2. Get Your API Key

  1. Log in to Mailchimp

  2. Go to Account & Billing > Extras > API Keys

  3. Click Create A Key

  4. 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-mailchimp

Cursor (.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-mailchimp

Related MCP server: mcp-mautic

Tools (71)

Account (1)

Tool

Description

ping

Validate API key and get account info

Campaigns (11)

Tool

Description

list_campaigns

List campaigns with status/audience filters

get_campaign

Get campaign details (settings, tracking, recipients)

create_campaign

Create a new email campaign

update_campaign

Update campaign settings (subject, from_name, etc.)

send_campaign

Send a campaign immediately

schedule_campaign

Schedule a campaign for a specific time

unschedule_campaign

Unschedule a scheduled campaign

cancel_campaign

Cancel a campaign currently sending

delete_campaign

Permanently delete a draft campaign

replicate_campaign

Copy an existing campaign

send_test_email

Send test email to specified addresses

Campaign Content (2)

Tool

Description

get_campaign_content

Get campaign HTML and plain-text content

set_campaign_content

Set content via HTML or template

Reports (5)

Tool

Description

get_campaign_report

Performance report (opens, clicks, bounces, unsubscribes)

get_click_report

Click details -- which URLs were clicked and how often

get_open_report

Open details -- which subscribers opened and when

get_unsubscribe_report

Unsubscribe details -- who left and why

get_sent_to_report

Delivery details -- recipient status (sent, bounced)

Audiences (4)

Tool

Description

list_audiences

List all audiences with subscriber counts

get_audience

Get audience details and stats

create_audience

Create a new audience/list

update_audience

Update audience settings

Audience Analytics (3)

Tool

Description

get_audience_growth

Monthly growth history -- subscribes, unsubscribes, net change

get_audience_locations

Subscriber location breakdown by country/region

get_email_client_stats

Email domain performance -- Gmail, Outlook, Apple Mail breakdown

Members (8)

Tool

Description

list_members

List/filter audience members by status

get_member

Get subscriber details by email

add_or_update_member

Add new subscriber or update existing (upsert)

archive_member

Archive (soft-delete) a subscriber

delete_member_permanent

Permanently delete a subscriber (irreversible)

batch_subscribe_members

Batch subscribe up to 500 members at once

search_members

Search members across all audiences

get_member_activity

Recent subscriber activity (opens, clicks, etc.)

Member Notes (2)

Tool

Description

list_member_notes

List CRM-style notes on a subscriber

add_member_note

Add a note to a subscriber

Tags (2)

Tool

Description

list_tags

List all tags for an audience

manage_member_tags

Add or remove tags on a subscriber

Segments (5)

Tool

Description

list_segments

List saved segments for an audience

get_segment_members

List members in a segment

create_segment

Create a static segment from email addresses

update_segment

Update segment name or add/remove members

delete_segment

Delete a segment

Merge Fields (2)

Tool

Description

list_merge_fields

List custom fields (FNAME, LNAME, custom)

create_merge_field

Create a custom merge field (text, number, date, etc.)

Interest Categories & Groups (2)

Tool

Description

list_interest_categories

List interest groups (checkboxes, dropdowns, radios)

list_interests

List individual options within a category

Templates (4)

Tool

Description

list_templates

List available email templates

get_template

Get template details and HTML content

create_template

Create a new template from HTML

delete_template

Delete a custom template

Automations (5)

Tool

Description

list_automations

List classic automations

get_automation

Get automation details and trigger info

list_automation_emails

List all emails in an automation workflow

pause_automation

Pause all emails in a workflow

start_automation

Start all emails in a workflow

Webhooks (3)

Tool

Description

list_webhooks

List webhooks for an audience

create_webhook

Create a webhook for audience events

delete_webhook

Delete a webhook

E-Commerce (6)

Tool

Description

list_ecommerce_stores

List connected stores (Shopify, WooCommerce, etc.)

list_store_products

List products in a connected store

list_store_orders

List orders -- filter by campaign for revenue attribution

get_ecommerce_customer

Get customer details with order count and total spent

list_store_carts

List abandoned carts for recovery campaigns

list_store_promo_codes

List promo codes for a promo rule

A/B Testing (1)

Tool

Description

get_ab_test_results

Get variate campaign results -- which combination won

Landing Pages (2)

Tool

Description

list_landing_pages

List landing pages with visit/conversion stats

get_landing_page

Get landing page details and tracking data

File Manager (2)

Tool

Description

list_files

List files in the Mailchimp file manager

upload_file

Upload a file (base64-encoded)

Batch Operations (1)

Tool

Description

create_batch_operation

Submit up to 500 API operations in a single batch

Examples

"What campaigns have I sent recently?"

Uses list_campaigns with status=sent to show recent campaigns with open/click stats.

"How has my audience grown this quarter?"

Uses get_audience_growth to show monthly subscribe/unsubscribe trends.

"Which campaign drove the most revenue?"

Uses list_store_orders with campaign_id to see revenue attribution per campaign.

"Show me abandoned carts from my Shopify store"

Uses list_store_carts to find recovery opportunities.

"Add a note to john@example.com that he called about pricing"

Uses add_member_note for CRM-style contact management.

"What A/B test subject line won?"

Uses get_ab_test_results to see which variant performed best.

"Where are my subscribers located?"

Uses get_audience_locations for 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]"
pytest

License

MIT

Available Tools

71 tools
add_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

    B3.3/5.0

    Scored across 71 tools

    Disambiguation4/5

    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.

    Naming Consistency5/5

    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.

    Tool Count4/5

    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.

    Completeness4/5

    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

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      An 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.
      13
      31 npm
      MIT
    • A
      license
      Not graded
      quality
      F
      maintenance
      Comprehensive MCP server for the Mautic marketing automation API, providing 203 tools for managing contacts, campaigns, emails, segments, and more.
      2
      ISC
    • A
      license
      A
      quality
      D
      maintenance
      A 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.
      12
      31 npm
      MIT
    • F
      license
      B
      quality
      D
      maintenance
      MCP server for Mailchimp Marketing API v3 with 72 tools covering audiences, campaigns, templates, reports, and more.
      72
      -