mailchimp-mcp-server

module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 20, 2026 License: MIT

README

Mailchimp MCP Server

Go MCP

A Go Model Context Protocol (MCP) server providing full read+write access to the Mailchimp Marketing API v3279 tools covering every endpoint.

[!NOTE] Unofficial — This project is not affiliated with, endorsed by, or sponsored by Mailchimp or Intuit.

Features

  • 279 tools — full Mailchimp Marketing API coverage, not just analytics
  • Read + write — create campaigns, manage subscribers, send emails, set up automations
  • Campaigns — create, schedule, send, test, replicate, cancel, pause/resume RSS campaigns
  • Automations — manage workflows, emails, queues, start/pause automation steps
  • Audiences — full subscriber lifecycle: add, update, tag, archive, search, segment
  • E-commerce — stores, products, variants, orders, carts, promo codes
  • Reports — opens, clicks, unsubscribes, revenue, domain performance, locations
  • Templates, landing pages, surveys, file manager, webhooks — everything else
  • Smart retry — automatic backoff with Retry-After header support for rate limiting
  • Clean responses_links stripped from all responses to save tokens
  • 10-connection concurrency — respects Mailchimp's simultaneous connection limit
  • Extensible — plug in custom credential backends via the CredentialProvider interface

Quick Start

# Install
go install github.com/richardpowellus/mailchimp-mcp-server/cmd/mailchimp-mcp-server@latest

# Run
export MAILCHIMP_API_KEY="your-api-key-us2"
mailchimp-mcp-server

The server communicates over stdio using JSON-RPC 2.0 — connect it to any MCP-compatible client.

Installation

go install github.com/richardpowellus/mailchimp-mcp-server/cmd/mailchimp-mcp-server@latest

Requires Go 1.23 or later.

Option 2: Docker
docker run -i --rm \
  -e MAILCHIMP_API_KEY="your-api-key-us2" \
  ghcr.io/richardpowellus/mailchimp-mcp-server
Option 3: Binary Download

Download prebuilt binaries for Linux, macOS, and Windows from GitHub Releases.

MCP Client Configuration

Claude Desktop / VS Code / GitHub Copilot

Add to your MCP configuration file:

{
  "mcpServers": {
    "mailchimp": {
      "command": "mailchimp-mcp-server",
      "env": {
        "MAILCHIMP_API_KEY": "your-api-key-us2"
      }
    }
  }
}
Docker
{
  "mcpServers": {
    "mailchimp": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "MAILCHIMP_API_KEY",
        "ghcr.io/richardpowellus/mailchimp-mcp-server"
      ],
      "env": {
        "MAILCHIMP_API_KEY": "your-api-key-us2"
      }
    }
  }
}

Configuration

Variable Required Description
MAILCHIMP_API_KEY Yes Mailchimp API key in key-datacenter format (e.g., abc123def-us2)
Getting an API Key
  1. Log in to Mailchimp
  2. Navigate to Account & billingExtrasAPI keys
  3. Click Create A Key
  4. Copy the full key — it includes a datacenter suffix (e.g., -us2)

The suffix after the last - identifies your Mailchimp datacenter. The server uses this to route requests to https://<dc>.api.mailchimp.com/3.0.

Tools

279 tools organized across 38 categories. Click a category to see the tools.

Account (3 tools)
Tool Description
list_accounts List configured Mailchimp accounts
ping Ping the Mailchimp API to verify connectivity
get_account_info Get account details (name, contact, plan, industry)
Campaigns (16 tools)
Tool Description
list_campaigns List campaigns with filtering and pagination
create_campaign Create a new campaign (regular, plaintext, RSS, A/B)
get_campaign Get a single campaign by ID
update_campaign Update campaign settings
delete_campaign Delete a campaign
send_campaign Send a campaign immediately
schedule_campaign Schedule a campaign for future delivery
unschedule_campaign Cancel a scheduled campaign
cancel_campaign Cancel a campaign that is sending
send_test_email Send a test email for a campaign
replicate_campaign Create a copy of a campaign
resend_campaign Resend a campaign to non-openers
get_send_checklist Get the pre-send checklist for a campaign
search_campaigns Search campaigns by query string
pause_rss_campaign Pause an RSS campaign
resume_rss_campaign Resume a paused RSS campaign
Campaign Content (2 tools)
Tool Description
get_campaign_content Get the HTML/text content of a campaign
set_campaign_content Set campaign content (HTML, template, URL)
Campaign Feedback (5 tools)
Tool Description
list_campaign_feedback List feedback on a campaign
get_campaign_feedback Get a specific feedback message
add_campaign_feedback Add feedback to a campaign
update_campaign_feedback Update a feedback message
delete_campaign_feedback Delete a feedback message
Campaign Folders (5 tools)
Tool Description
list_campaign_folders List campaign folders
get_campaign_folder Get a campaign folder
create_campaign_folder Create a campaign folder
update_campaign_folder Rename a campaign folder
delete_campaign_folder Delete a campaign folder
Audiences (8 tools)
Tool Description
list_audiences List audiences (subscriber lists)
create_audience Create a new audience
get_audience Get audience details
update_audience Update audience settings
delete_audience Delete an audience
get_audience_growth Get audience growth history
get_audience_locations Get top subscriber locations
get_email_client_stats Get email client usage stats for an audience
Audience Stats (7 tools)
Tool Description
list_abuse_reports List abuse reports for an audience
get_abuse_report Get a specific abuse report
get_audience_activity Get recent audience activity
list_signup_forms List signup forms for an audience
create_signup_form Create/update a signup form
list_audience_surveys List surveys for an audience
get_audience_survey Get a specific audience survey
Members (20 tools)
Tool Description
list_members List members of an audience
get_member Get a member by email or subscriber hash
add_member Add a new member to an audience
update_member Update a member's info
upsert_member Add or update a member (PUT)
archive_member Archive (soft delete) a member
delete_member_permanent Permanently delete a member
search_members Search for members across all audiences
batch_subscribe Batch add/update members
get_member_tags Get tags for a member
manage_member_tags Add or remove tags on a member
list_member_notes List notes for a member
get_member_note Get a specific member note
add_member_note Add a note to a member
update_member_note Update a member note
delete_member_note Delete a member note
get_member_events Get events for a member
add_member_event Create a custom event for a member
get_member_activity Get recent activity for a member
get_member_activity_feed Get the full activity feed for a member
Member Goals (1 tool)
Tool Description
get_member_goals Get goal tracking data for a member
Merge Fields (5 tools)
Tool Description
list_merge_fields List merge fields for an audience
get_merge_field Get a specific merge field
create_merge_field Create a merge field
update_merge_field Update a merge field
delete_merge_field Delete a merge field
Interest Categories & Interests (11 tools)
Tool Description
list_interest_categories List interest categories (groups)
get_interest_category Get an interest category
create_interest_category Create an interest category
update_interest_category Update an interest category
delete_interest_category Delete an interest category
list_interests List interests within a category
get_interest Get a specific interest
create_interest Create an interest
update_interest Update an interest
delete_interest Delete an interest
get_growth_history_month Get growth history for a specific month
Segments (9 tools)
Tool Description
list_segments List segments for an audience
get_segment Get a segment
create_segment Create a segment (static or dynamic)
update_segment Update a segment
delete_segment Delete a segment
list_segment_members List members in a segment
add_segment_member Add a member to a static segment
remove_segment_member Remove a member from a static segment
batch_segment_members Batch add/remove segment members
Tags (1 tool)
Tool Description
search_tags Search for tags across audiences
Automations (18 tools)
Tool Description
list_automations List automations
get_automation Get an automation workflow
create_automation Create an automation
start_automation Start an automation
pause_automation Pause an automation
archive_automation Archive an automation
list_automation_emails List emails in an automation
get_automation_email Get an automation email
delete_automation_email Delete an automation email
start_automation_email Start an automation email
pause_automation_email Pause an automation email
update_automation_email Update automation email settings
get_automation_email_content Get automation email content
set_automation_email_content Set automation email content
list_automation_queue List subscribers in an automation queue
get_automation_queue_subscriber Get a subscriber from the automation queue
remove_automation_subscriber Remove a subscriber from an automation
get_subscriber_email_activity Get email activity for a subscriber in an automation
Customer Journeys (1 tool)
Tool Description
trigger_journey_step Trigger a step in a customer journey for a contact
Templates (6 tools)
Tool Description
list_templates List templates
get_template Get a template
create_template Create a template
update_template Update a template
delete_template Delete a template
get_template_content Get the HTML content of a template
Template Folders (5 tools)
Tool Description
list_template_folders List template folders
get_template_folder Get a template folder
create_template_folder Create a template folder
update_template_folder Rename a template folder
delete_template_folder Delete a template folder
Reports (22 tools)
Tool Description
list_reports List campaign reports
get_campaign_report Get a specific campaign report
get_campaign_abuse_reports List abuse reports for a campaign
get_campaign_abuse_report Get a specific campaign abuse report
get_campaign_advice Get campaign feedback/advice
get_open_details Get open details for a campaign
get_open_details_subscriber Get open details for a specific subscriber
get_click_details Get click details for a campaign
get_click_link_details Get details for a specific tracked link
get_click_link_members List members who clicked a specific link
get_click_link_member Get click details for a specific member on a link
get_campaign_unsubscribes List unsubscribes for a campaign
get_campaign_unsubscribe Get a specific unsubscribe record
get_email_activity Get email activity for a campaign
get_sent_to List recipients of a campaign
get_sent_to_member Get delivery details for a specific recipient
get_domain_performance Get sending domain performance for a campaign
get_report_locations Get top open locations for a campaign
get_ecommerce_product_activity Get e-commerce product activity for a campaign
get_sub_reports Get child campaign reports (A/B, variate)
get_eepurl_activity Get activity for a campaign's eepurl
get_removed_subscriber Get a removed subscriber from a campaign
E-commerce Stores (5 tools)
Tool Description
list_stores List e-commerce stores
get_store Get a store
create_store Create a store
update_store Update a store
delete_store Delete a store
E-commerce Products (15 tools)
Tool Description
list_store_products List products in a store
get_store_product Get a product
create_store_product Create a product
update_store_product Update a product
delete_store_product Delete a product
list_product_variants List variants of a product
get_product_variant Get a variant
create_product_variant Create a variant
update_product_variant Update a variant
upsert_product_variant Add or update a variant (PUT)
delete_product_variant Delete a variant
list_product_images List images for a product
get_product_image Get a product image
create_product_image Add an image to a product
delete_product_image Delete a product image
E-commerce Orders (11 tools)
Tool Description
list_store_orders List orders in a store
list_all_orders List orders across all stores
get_store_order Get an order
create_store_order Create an order
update_store_order Update an order
delete_store_order Delete an order
list_order_lines List line items in an order
get_order_line Get an order line item
create_order_line Add a line item to an order
update_order_line Update an order line item
delete_order_line Delete an order line item
E-commerce Customers (6 tools)
Tool Description
list_store_customers List customers in a store
get_store_customer Get a customer
create_store_customer Create a customer
update_store_customer Update a customer
upsert_store_customer Add or update a customer (PUT)
delete_store_customer Delete a customer
E-commerce Carts (10 tools)
Tool Description
list_store_carts List carts in a store
get_store_cart Get a cart
create_store_cart Create a cart
update_store_cart Update a cart
delete_store_cart Delete a cart
list_cart_lines List line items in a cart
get_cart_line Get a cart line item
create_cart_line Add a line item to a cart
update_cart_line Update a cart line item
delete_cart_line Delete a cart line item
E-commerce Promos (10 tools)
Tool Description
list_promo_rules List promo rules in a store
get_promo_rule Get a promo rule
create_promo_rule Create a promo rule
update_promo_rule Update a promo rule
delete_promo_rule Delete a promo rule
list_promo_codes List promo codes for a rule
get_promo_code Get a promo code
create_promo_code Create a promo code
update_promo_code Update a promo code
delete_promo_code Delete a promo code
Landing Pages (9 tools)
Tool Description
list_landing_pages List landing pages
get_landing_page Get a landing page
create_landing_page Create a landing page
update_landing_page Update a landing page
delete_landing_page Delete a landing page
publish_landing_page Publish a landing page
unpublish_landing_page Unpublish a landing page
get_landing_page_content Get the content of a landing page
set_landing_page_content Set the content of a landing page
File Manager (10 tools)
Tool Description
list_files List files in the file manager
get_file Get a file's metadata
upload_file Upload a file
update_file Update a file's metadata
delete_file Delete a file
list_file_folders List file manager folders
get_file_folder Get a folder
create_file_folder Create a folder
update_file_folder Update a folder
delete_file_folder Delete a folder
Webhooks (5 tools)
Tool Description
list_webhooks List webhooks for an audience
get_webhook Get a webhook
create_webhook Create a webhook
update_webhook Update a webhook
delete_webhook Delete a webhook
Batch Operations (4 tools)
Tool Description
list_batches List batch operations
get_batch_status Get the status of a batch operation
create_batch Start a batch operation
delete_batch Delete a batch operation
Batch Webhooks (5 tools)
Tool Description
list_batch_webhooks List batch webhooks
get_batch_webhook Get a batch webhook
create_batch_webhook Create a batch webhook
update_batch_webhook Update a batch webhook
delete_batch_webhook Delete a batch webhook
Verified Domains (5 tools)
Tool Description
list_verified_domains List verified sending domains
get_verified_domain Get a verified domain
add_verified_domain Add a domain for verification
delete_verified_domain Delete a verified domain
verify_domain Submit a verification code for a domain
Authorized Apps (2 tools)
Tool Description
list_authorized_apps List authorized integrations
get_authorized_app Get an authorized app
Activity Feed (1 tool)
Tool Description
get_activity_feed Get the Chimp Chatter activity feed
Conversations (4 tools)
Tool Description
list_conversations List conversations
get_conversation Get a conversation
list_conversation_messages List messages in a conversation
get_conversation_message Get a conversation message
Connected Sites (5 tools)
Tool Description
list_connected_sites List connected sites
get_connected_site Get a connected site
add_connected_site Add a connected site
delete_connected_site Remove a connected site
verify_connected_site Verify a connected site's script installation
Account Exports (3 tools)
Tool Description
list_account_exports List account data exports
get_account_export Get an export's details
create_account_export Create a new account export
Surveys (9 tools)
Tool Description
list_surveys List surveys
get_survey Get a survey
publish_survey Publish a survey
unpublish_survey Unpublish a survey
list_survey_questions List questions in a survey
get_survey_question Get a survey question
list_survey_question_answers List answers for a survey question
list_survey_responses List responses to a survey
get_survey_response Get a specific survey response
Facebook Ads (5 tools)
Tool Description
list_facebook_ads List Facebook ad campaigns
get_facebook_ad Get a Facebook ad campaign
list_facebook_ad_reports List Facebook ad reports
get_facebook_ad_report Get a Facebook ad report
get_facebook_ad_ecommerce Get e-commerce data for a Facebook ad
Landing Page Reports (2 tools)
Tool Description
list_landing_page_reports List reports for landing pages
get_landing_page_report Get a landing page report
Audiences BETA (8 tools)
Tool Description
list_audiences_beta List audiences (beta endpoint)
get_audience_beta Get an audience (beta endpoint)
create_audience_contact Create a contact in an audience (beta)
list_audience_contacts List contacts in an audience (beta)
get_audience_contact Get a contact (beta)
update_audience_contact Update a contact (beta)
archive_audience_contact Archive a contact (beta)
forget_audience_contact Permanently forget a contact (GDPR, beta)

Usage Examples

Campaign analytics:

"Show me the open rate and click rate for my last 5 campaigns."

The AI will call list_campaigns to find recent campaigns, then get_campaign_report for each to retrieve performance metrics.

Send a campaign:

"Create a new campaign called 'Summer Sale' for my main audience, set the HTML content, and send a test email to me first."

Uses list_audiencescreate_campaignset_campaign_contentsend_test_email.

Subscriber management:

"Search for john@example.com, show me their activity and tags, then add a 'VIP' tag."

Uses search_membersget_member_activityget_member_tagsmanage_member_tags.

Abandoned cart automation:

"List my automations, find the abandoned cart workflow, and show me the emails and their performance."

Uses list_automationslist_automation_emailsget_automation_email_content and get_campaign_report for each email.

E-commerce sync:

"Create a new product in my store with two variants and a promo code for 10% off."

Uses create_store_productcreate_product_variant (×2) → create_promo_rulecreate_promo_code.

Architecture

┌─────────────────┐     stdio      ┌──────────────────────────┐      HTTPS       ┌─────────────────┐
│   MCP Client    │◄──────────────►│  mailchimp-mcp-server    │◄────────────────►│  Mailchimp API  │
│  (Claude, etc.) │   JSON-RPC 2.0 │  Go binary               │  Basic Auth       │  v3 (per-DC)    │
└─────────────────┘                │                          │                   └─────────────────┘
                                   │  • 279 registered tools  │
                                   │  • 10-conn semaphore     │
                                   │  • Smart retry + backoff │
                                   │  • _links stripping      │
                                   │  • Auto-pagination       │
                                   └──────────────────────────┘
  • Transport: stdio JSON-RPC 2.0 (compatible with any MCP host)
  • Auth: HTTP Basic Auth — datacenter auto-detected from API key suffix
  • Concurrency: Channel-based semaphore limits to 10 simultaneous connections (Mailchimp's limit)
  • Retry: GETs retry on transient errors (429, 5xx) with exponential backoff; writes retry only on 429 with Retry-After header support
  • Response cleaning: _links arrays stripped recursively from all responses, saving significant tokens
  • Auto-pagination: FetchAll() helper automatically paginates Mailchimp list endpoints using offset/count
  • Process lifecycle: Parent-process watchdog for clean shutdown; handles SIGINT/SIGTERM

Extensibility

The server can be used as a Go library with a custom credential provider — for example, to load API keys from a secret manager instead of environment variables:

package main

import (
    "context"

    "github.com/richardpowellus/mailchimp-mcp-server/mailchimp"
    "github.com/richardpowellus/mailchimp-mcp-server/mailchimp/tools"
    "github.com/richardpowellus/mailchimp-mcp-server/mcp"
)

// VaultProvider loads Mailchimp API keys from a secret manager.
type VaultProvider struct { /* ... */ }

func (p *VaultProvider) GetAPIKey(ctx context.Context, name string) (string, error) {
    // Fetch from Vault, AWS Secrets Manager, Azure Key Vault, etc.
    return fetchFromVault(ctx, name)
}

func (p *VaultProvider) ListAccounts(ctx context.Context) ([]mailchimp.AccountInfo, error) {
    return []mailchimp.AccountInfo{
        {Name: "production", DisplayName: "Production Account"},
        {Name: "staging", DisplayName: "Staging Account"},
    }, nil
}

func main() {
    cfg := mailchimp.NewConfig(&VaultProvider{})
    server := mcp.New("Mailchimp", "1.0.0", "Custom Mailchimp MCP server")
    tools.RegisterAll(server, cfg)
    server.Run(context.Background())
}

Building from Source

git clone https://github.com/richardpowellus/mailchimp-mcp-server.git
cd mailchimp-mcp-server
go build ./cmd/mailchimp-mcp-server/
Run tests
go test ./...
Run linter
go vet ./...

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines on:

  • Building and testing
  • Code style requirements
  • Adding new tools
  • Pull request process

License

This project is licensed under the MIT License — see the LICENSE file for details.

Directories

Path Synopsis
cmd
internal
paging
Package paging provides response-level pagination for MCP tool results.
Package paging provides response-level pagination for MCP tool results.
tz
Package tz provides timezone helpers for MCP servers.
Package tz provides timezone helpers for MCP servers.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL