MewCP LogoAStheTech
MCPs
Use Cases

Use cases by category

Productivity & InboxInbox, calendar, and daily flowEngineering & DevOpsShip, debug, and run on-callSales & CRMPipeline, outreach, and dealsMarketing & GrowthCampaigns, SEO, and growthSupport & SuccessTriage tickets, keep customers happyFinance & OpsClose, reconcile, and expensesCreative & ContentGenerate assets and contentPeople & HiringHiring, onboarding, and HRResearch & DataSynthesize data and insights
See all use cases
BlogsPricingDocsLogin
MewCP Logo

Infrastructure You Can Trust for Agentic Products

X

Categories

  • Productivity & Docs
  • Developer Tools
  • CRM & Sales
  • Finance & Commerce
  • Data & Analytics
  • Marketing & SEO
  • Search & Web
  • Communication
  • View All Servers →

Resources

  • Blog
  • Docs
  • Privacy Policy
  • Terms of Service

Blogs

  • View All Blogs →
Browse Servers|Pricing|Contact

Browse by Category

Productivity & Docs

  • Gmail
  • Google Drive
  • Google Classroom
  • Google Calendar
  • Google People
  • YouTube
  • Notion
  • ClickUp
  • Figma

Developer Tools

  • Gemini
  • Veo
  • ClickUp
  • Firecrawl
  • Vercel
  • Apify
  • Github
  • HTTP
  • Chef
  • Scientific Calculator
  • Figma
  • Perplexity

CRM & Sales

  • Google People

Finance & Commerce

  • Razorpay
  • Polymarket
  • Kite
  • Stripe
  • Binance

Marketing & SEO

  • Mailchimp
  • Google Business
  • YouTube

Search & Web

  • Web Scrapper
  • Firecrawl
  • Apify
  • Perplexity

Communication

  • Gmail
  • Google Meet
  • Mailchimp
  • Google Calendar
  • WhatsApp
  • Slack

© 2026 MewCP. All rights reserved.

Mailchimp

Mailchimp

v1.0.02 callsOAuthGitHub
Open in ChatGPTChatGPT
Open in ClaudeClaude

Documentation

Guide

Connect

Gateway URL

https://gateway.mewcp.com/mailchimp/mcp

Integrations

Click a client to view its config snippet and setup steps, or use Connect above to add this server and get your key.

Help Improve This Server

Missing a tool?

Found a bug?

Have an idea for an improvement?

Share your feedback directly with the maintainers - every feedback helps make this server better for everyone.

Open GitHub Issues →

Run your Mailchimp marketing operations through AI.

A Model Context Protocol (MCP) server that exposes Mailchimp's Marketing API for reading and managing automations, audiences, campaigns, templates, landing pages, and e-commerce data.

Overview

The MewCP Mailchimp MCP Server provides authenticated access to the Mailchimp Marketing API:

  • Inspect classic automation workflows, their individual emails, and the subscribers queued in each email's send queue
  • List and read audiences (lists) and campaigns, including full campaign performance reports
  • Manage Classic templates and folders, and inspect landing pages and their published HTML content
  • Query connected e-commerce stores, products, and orders — including orders attributed to a specific campaign

Perfect for:

  • AI assistants that need to read or manage Mailchimp marketing data
  • Automating campaign and automation performance reporting
  • Building tools that connect Mailchimp audience, campaign, and e-commerce data to other systems

Tools

Automations

Get a summary of an account's classic automations with optional filtering and pagination

Inputs:

- `count` (int, optional, default: 10) — Number of records to return (max: 1000)
- `offset` (int, optional, default: 0) — Number of records to skip for pagination
- `fields` (string, optional, default: null) — Comma-separated list of fields to return
- `exclude_fields` (string, optional, default: null) — Comma-separated list of fields to exclude
- `before_create_time` (string, optional, default: null) — Restrict to automations created before this time (ISO 8601: 2015-10-21T15:41:36+00:00)
- `since_create_time` (string, optional, default: null) — Restrict to automations created after this time (ISO 8601: 2015-10-21T15:41:36+00:00)
- `before_start_time` (string, optional, default: null) — Restrict to automations started before this time (ISO 8601: 2015-10-21T15:41:36+00:00)
- `since_start_time` (string, optional, default: null) — Restrict to automations started after this time (ISO 8601: 2015-10-21T15:41:36+00:00)
- `status` (string, optional, default: null) — Filter by status: 'save', 'paused', or 'sending'

output data schema:

{
  automations: {
    id: string | null;
    create_time: string | null;
    start_time: string | null;
    status: string | null;
    emails_sent: number | null;
    recipients: {
      list_id: string | null;
      store_id



Get detailed information about a specific automation workflow by ID

Inputs:

- `workflow_id` (string, required) — The unique ID of the Automation workflow
- `fields` (string, optional, default: null) — Comma-separated list of fields to return
- `exclude_fields` (string, optional, default: null) — Comma-separated list of fields to exclude

output data schema:

{
  id: string | null








Get a summary of the emails in a classic automation workflow

Inputs:

- `workflow_id` (string, required) — The unique ID of the Automation workflow

output data schema:

{
  emails: {
    id: string | null;
    workflow_id: string | null;
    position: number |












Get detailed information about a specific email in an automation workflow

Inputs:

- `workflow_id` (string, required) — The unique ID of the Automation workflow
- `workflow_email_id` (string, required) — The unique ID of the Automation workflow email

output data schema:

{
  id: string | null;
  workflow_id: string | null;
  position










Get information about subscribers queued to receive a specific automation email

Inputs:

- `workflow_id` (string, required) — The unique ID of the Automation workflow
- `workflow_email_id` (string, required) — The unique ID of the Automation workflow email

output data schema:

{
  queue: {
    id: string | null;
    workflow_id: string | null






Get detailed information about a specific subscriber to an automation email queue

Inputs:

- `workflow_id` (string, required) — The unique ID of the Automation workflow
- `workflow_email_id` (string, required) — The unique ID of the Automation workflow email
- `subscriber_hash` (string, required) — The MD5 hash of the lowercase version of the subscriber's email address

output data schema:

{
  id: string | null;





Audiences

Get information about all lists (audiences) in the account

Inputs:

(no parameters)

output data schema:

{
  lists: {
    id: string | null;
    web_id: number | null;
    name: string | null;









Get detailed information about a specific list (audience) in your Mailchimp account

Inputs:

- `list_id` (string, required) — The unique ID for the list

output data schema:

{
  id: string | null;
  web_id: number | null;
  name: string | null;
  date_created






Campaigns

Get all campaigns in an account

Inputs:

(no parameters)

output data schema:

{
  campaigns: {
    id: string | null;
    web_id: number | null;
    type: string | null;
    create_time
















Get detailed information about a specific campaign

Inputs:

- `campaign_id` (string, required) — The unique ID for the campaign

output data schema:

{
  id: string | null;
  web_id: number | null;
  type: string | null;
  create_time














Get all campaign reports with performance metrics

Inputs:

- `count` (int, optional, default: 10) — Number of reports to return (max: 1000)
- `offset` (int, optional, default: 0) — Number of records to skip for pagination
- `type` (string, optional, default: null) — Filter by campaign type: 'regular', 'plaintext', 'absplit', 'rss', or 'variate'

output data schema:

{
  reports



















Get detailed report for a specific sent campaign

Inputs:

- `campaign_id` (string, required) — The unique ID for the campaign

output data schema:

{
  id: string | null;
  campaign_title: string | null;
  type: string | null;
  list_id













Landing Pages

Get all landing pages in your account

Inputs:

- `count` (int, optional, default: 10) — Number of landing pages to return (max: 1000)
- `sort_field` (string, optional, default: null) — Sort by: 'created_at' or 'updated_at'
- `sort_dir` (string, optional, default: null) — Sort direction: 'ASC' or 'DESC'

output data schema:

{
  landing_pages: {













Get detailed information about a specific landing page by ID

Inputs:

- `page_id` (string, required) — The unique ID for the landing page

output data schema:

{
  id: string | null;
  name: string | null;
  title: string | null;
  status







Get the HTML content for a specific landing page

Inputs:

- `page_id` (string, required) — The unique ID for the landing page

output data schema:

{
  html: string | null;
}

Templates

Get all folders used to organize templates

Inputs:

- `count` (int, optional, default: 10) — Number of folders to return (max: 1000)
- `offset` (int, optional, default: 0) — Number of records to skip for pagination

output data schema:

{
  folders: {
    id: string | null;




Create a new template folder

Inputs:

- `name` (string, required) — The name of the folder

output data schema:

{
  id: string | null;
  name: string | null;
  count: number | null;
}

Get all templates in your account

Inputs:

- `count` (int, optional, default: 10) — Number of templates to return (max: 1000)
- `offset` (int, optional, default: 0) — Number of records to skip for pagination
- `type` (string, optional, default: null) — Filter by type: 'user', 'base', or 'gallery'
- `content_type` (string, optional, default: null) — Filter by content type: 'html', 'template', or 'multichannel'

output data schema:

Get detailed information about a specific template by ID

Inputs:

- `template_id` (string, required) — The unique ID for the template

output data schema:

{
  id: number | null;
  type: string | null;
  name: string | null;
  date_created






Create a new Classic template for the account. It supports Mailchimp Template Language

Inputs:

- `name` (string, required) — The name of the template
- `html` (string, required) — The raw HTML for the template. Supports Mailchimp Template Language
- `folder_id` (string, optional, default: null) — The ID of the folder to place the template in

output data schema:

{
  id: number | null;
  type: string 







Updates the name, HTML, or folder of an existing Classic template. This overwrites the current name and HTML with the values you provide (folder_id is only changed if given) — the original state is not stored by the API after the call. The response includes both the before and after state so you have a full record of what changed.

Inputs:

- `template_id` (string, required) — The unique ID for the template
- `name` (string, required) — The name of the template
- `html` (string, required) — The raw HTML for the template. Supports Mailchimp Template Language
- `folder_id` (string, optional, default: null) — The ID of the folder to move the template to

output data schema:

{

































E-commerce

Get information about all e-commerce stores in the account

Inputs:

- `count` (int, optional, default: 10) — Number of stores to return (max: 1000)
- `offset` (int, optional, default: 0) — Number of records to skip for pagination

output data schema:

{
  stores: {
    id: string | null;







Get detailed information about a specific e-commerce store

Inputs:

- `store_id` (string, required) — The unique ID for the store

output data schema:

{
  id: string | null;
  list_id: string | null;
  name: string | null;
  platform


Get information about all products in a specific e-commerce store

Inputs:

- `store_id` (string, required) — The unique ID for the store
- `count` (int, optional, default: 10) — Number of products to return (max: 1000)
- `offset` (int, optional, default: 0) — Number of records to skip for pagination

output data schema:

{
  products: {
    id: string 








Get detailed information about a specific product in an e-commerce store

Inputs:

- `store_id` (string, required) — The unique ID for the store
- `product_id` (string, required) — The unique ID for the product

output data schema:

{
  id: string | null;
  title: string | null;
  handle: string |




Get information about all orders in a specific e-commerce store

Inputs:

- `store_id` (string, required) — The unique ID for the store
- `count` (int, optional, default: 10) — Number of orders to return (max: 1000)
- `offset` (int, optional, default: 0) — Number of records to skip for pagination
- `customer_id` (string, optional, default: null) — Restrict results to orders made by a specific customer
- `campaign_id` (string, optional, default: null) — Restrict results to orders with a specific campaign ID

output data schema:

Get detailed information about a specific order in an e-commerce store

Inputs:

- `store_id` (string, required) — The unique ID for the store
- `order_id` (string, required) — The unique ID for the order

output data schema:

{
  id: string | null;
  customer: {
    id: string | null;
    email_address







System

Check Mailchimp API connectivity

Inputs:

(no parameters)

output data schema:

{
  health_status: string | null;
}

API Parameters Reference

Every tool returns the same top-level envelope. Only data varies per tool.

// Success
{
  "success": true,
  "statusCode": 200,
  "retriable": false,
  "retry_after_seconds": null,
  "error": null,
  "data": { ... }
}
 
// Error







  • count — Number of records to return per request (default: 10, max: 1000)
  • offset — Number of records to skip; use with count to page through results

list_automations and get_automation_info support field filtering to shrink the response payload.

  • fields — Comma-separated list of response fields to include
  • exclude_fields — Comma-separated list of response fields to omit

Example:

fields: "automations.id,automations.status"
exclude_fields: "_links"

All datetime parameters use ISO 8601 format:

format: YYYY-MM-DDTHH:MM:SS+HH:MM
Example: 2015-10-21T15:41:36+00:00

The subscriber_hash parameter used by get_automated_email_subscriber is the MD5 hash of the subscriber's lowercase email address.

input: user@example.com → lowercase → user@example.com
Hash: md5("user@example.com") → b58996c504c5638798eb6b511e6f49af

Every request is signed with your Mailchimp OAuth access token plus a server_prefix credential extra (e.g. us21) — the data center your Mailchimp account lives on. This is not part of any tool's inputs; it is stored on the credential itself and read automatically for every call.

Find it in the URL you use to log in to Mailchimp: https://usXX.admin.mailchimp.com — usXX is your server_prefix.

Troubleshooting

  • Cause: OAuth token not provided in request headers, or the linked credential is missing its server_prefix extra
  • Solution:
    1. Verify Authorization: Bearer YOUR_TOKEN and X-Mewcp-Credential-Id: CREDENTIAL-ID headers are present
    2. Check that the credential's extras include a valid server_prefix matching your Mailchimp account's data center
    3. Check the OAuth token has not expired — reconnect in your MewCP account if needed
  • Cause: API calls have exceeded your request limits
  • Solution:
    1. Check credit usage in your Curious Layer dashboard
    2. Upgrade to a paid plan or add credits for higher limits
    3. Contact support for credit adjustments
  • Cause: No Mailchimp credential linked to your account, or the credential has no server_prefix stored
  • Solution:
    1. Go to Credentials in your MewCP dashboard
    2. Connect your Mailchimp account via OAuth — this stores both the access token and your account's server_prefix
    3. Retry the request with the correct X-Mewcp-Credential-Id header
  • Cause: JSON payload is invalid or missing required fields
  • Solution:
    1. Validate JSON syntax before sending
    2. Ensure all required tool parameters are included
    3. Check parameter types match expected values (e.g. count must be an integer)
  • Cause: Incorrect server name in the API endpoint
  • Solution:
    1. Verify endpoint format: {server-name}/mcp/{tool-name}
    2. Use the correct server name from documentation
    3. Check available servers in your Curious Layer account
  • Cause: Upstream Mailchimp API returned an error
  • Solution:
    1. Check the Mailchimp Status Page for service issues
    2. Verify your OAuth credential has the required permissions for the requested resource
    3. Review the error message returned in the response for specific details

  • Mailchimp Marketing API Documentation — Official API reference
  • Mailchimp API Reference — Complete endpoint reference
  • FastMCP Docs — FastMCP specification
  • FastMCP Credentials — FastMCP Credentials package for credential handling
: string
|
null
;
} | null;
}[];
total_items: number | null;
}
;
create_time: string | null;
start_time: string | null;
status: string | null;
emails_sent: number | null;
recipients: {
list_id: string | null;
store_id: string | null;
} | null;
}
null
;
status: string | null;
emails_sent: number | null;
send_time: string | null;
content_type: string | null;
settings: {
subject_line: string | null;
title: string | null;
from_name: string | null;
reply_to: string | null;
} | null;
}[];
total_items: number | null;
}
: number
|
null
;
status: string | null;
emails_sent: number | null;
send_time: string | null;
content_type: string | null;
settings: {
subject_line: string | null;
title: string | null;
from_name: string | null;
reply_to: string | null;
} | null;
}
;
email_id: string | null;
list_id: string | null;
email_address: string | null;
next_send: string | null;
}[];
total_items: number | null;
}
workflow_id: string | null;
email_id: string | null;
list_id: string | null;
email_address: string | null;
next_send: string | null;
}
date_created
: string
|
null
;
stats: {
member_count: number | null;
unsubscribe_count: number | null;
open_rate: number | null;
click_rate: number | null;
} | null;
}[];
total_items: number | null;
}
: string
|
null
;
stats: {
member_count: number | null;
unsubscribe_count: number | null;
open_rate: number | null;
click_rate: number | null;
} | null;
}
: string
|
null
;
status: string | null;
emails_sent: number | null;
send_time: string | null;
recipients: {
list_id: string | null;
segment_text: string | null;
recipient_count: number | null;
} | null;
settings: {
subject_line: string | null;
title: string | null;
from_name: string | null;
reply_to: string | null;
} | null;
}[];
total_items: number | null;
}
: string
|
null
;
status: string | null;
emails_sent: number | null;
send_time: string | null;
recipients: {
list_id: string | null;
segment_text: string | null;
recipient_count: number | null;
} | null;
settings: {
subject_line: string | null;
title: string | null;
from_name: string | null;
reply_to: string | null;
} | null;
}
: {
id: string | null;
campaign_title: string | null;
type: string | null;
list_id: string | null;
list_name: string | null;
emails_sent: number | null;
send_time: string | null;
opens: {
opens_total: number | null;
unique_opens: number | null;
open_rate: number | null;
} | null;
clicks: {
clicks_total: number | null;
unique_clicks: number | null;
click_rate: number | null;
} | null;
}[];
total_items: number | null;
}
: string
|
null
;
list_name: string | null;
emails_sent: number | null;
send_time: string | null;
opens: {
opens_total: number | null;
unique_opens: number | null;
open_rate: number | null;
} | null;
clicks: {
clicks_total: number | null;
unique_clicks: number | null;
click_rate: number | null;
} | null;
}
id: string | null;
name: string | null;
title: string | null;
status: string | null;
url: string | null;
store_id: string | null;
list_id: string | null;
template_id: number | null;
created_at: string | null;
published_at: string | null;
updated_at: string | null;
}[];
total_items: number | null;
}
: string
|
null
;
url: string | null;
store_id: string | null;
list_id: string | null;
template_id: number | null;
created_at: string | null;
published_at: string | null;
updated_at: string | null;
}
name: string | null;
count: number | null;
}[];
total_items: number | null;
}
{ templates: { id: number | null; type: string | null; name: string | null; date_created: string | null; date_edited: string | null; active: boolean | null; folder_id: string | null; thumbnail: string | null; share_url: string | null; }[]; total_items: number | null; }
: string
|
null
;
date_edited: string | null;
active: boolean | null;
folder_id: string | null;
thumbnail: string | null;
share_url: string | null;
html: string | null;
}
|
null
;
name: string | null;
date_created: string | null;
date_edited: string | null;
active: boolean | null;
folder_id: string | null;
thumbnail: string | null;
share_url: string | null;
}
id: number | null;
type: string | null;
name: string | null;
date_created: string | null;
date_edited: string | null;
active: boolean | null;
folder_id: string | null;
thumbnail: string | null;
share_url: string | null;
before: {
id: number | null;
type: string | null;
name: string | null;
date_created: string | null;
date_edited: string | null;
active: boolean | null;
folder_id: string | null;
thumbnail: string | null;
share_url: string | null;
html: string | null;
};
after: {
id: number | null;
type: string | null;
name: string | null;
date_created: string | null;
date_edited: string | null;
active: boolean | null;
folder_id: string | null;
thumbnail: string | null;
share_url: string | null;
html: string | null;
};
}
list_id: string | null;
name: string | null;
platform: string | null;
domain: string | null;
currency_code: string | null;
}[];
total_items: number | null;
}
: string
|
null
;
domain: string | null;
currency_code: string | null;
}
|
null
;
title: string | null;
handle: string | null;
url: string | null;
type: string | null;
vendor: string | null;
image_url: string | null;
}[];
total_items: number | null;
}
null
;
url: string | null;
type: string | null;
vendor: string | null;
image_url: string | null;
}
{
  orders: {
    id: string | null;
    customer: {
      id: string | null;
      email_address: string | null;
    } | null;
    campaign_id: string | null;
    financial_status: string | null;
    fulfillment_status: string | null;
    currency_code: string | null;
    order_total: number | null;
    processed_at_foreign: string | null;
  }[];
  total_items: number | null;
}
: string
|
null
;
} | null;
campaign_id: string | null;
financial_status: string | null;
fulfillment_status: string | null;
currency_code: string | null;
order_total: number | null;
processed_at_foreign: string | null;
}
{
"success": false,
"statusCode": 400,
"retriable": false,
"retry_after_seconds": null,
"error": { "code": "ERROR_CODE", "message": "description", "details": {} },
"data": null
}
  • retriable — true when it is safe to retry (rate limit, network error, 503). false for validation and auth errors.
  • retry_after_seconds — seconds to wait before retrying; present only when retriable is true and the upstream specifies a delay.
  • error.code — machine-readable string: VALIDATION_ERROR, AUTH_ERROR, UPSTREAM_ERROR, SERVER_ERROR.