CCM
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
cyanheads avatar

Mailchimp Mcp Server

cyanheads/mailchimp-mcp-server
180 toolsauthSTDIO, HTTPregistry active
Summary

A full-featured Mailchimp integration that surfaces 18 core tools plus conditional asset and template management. You get campaign CRUD with single-call send workflows that request human confirmation before firing, subscriber upsert with declarative tag sync, batch imports capped at 500 rows, audience and segment management, merge field config, and post-send analytics sliced ten ways. The two workflow helpers handle the common "draft content, run checklist, send or schedule" and "clone last week's campaign with tweaks" patterns end-to-end. Local asset references in HTML auto-upload to Mailchimp's CDN. Local template authoring via Eta gives you a proper write path on free-tier accounts where the upstream templates API is read-only.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →

Tools

Public tool metadata for what this MCP can expose to an agent.

80 tools
MAILCHIMP_ADD_AUTOMATIONCreate a new classic automation in your Mailchimp account.5 params

Create a new classic automation in your Mailchimp account.

Parameters* required
recipients__list__idstring
The id of the List.
recipients__store__idstring
The id of the store.
settings__from__namestring
The "from" name for the Automation (not an email address).
settings__reply__tostring
The reply-to email address for the Automation.
trigger__settings__workflow__typestring
The type of Automation workflow. Currently only supports "abandonedCart".
MAILCHIMP_ADD_BATCH_WEBHOOKConfigure a webhook that will fire whenever any batch request completes processing. You may only have a maximum of 20 batch webhooks.2 params

Configure a webhook that will fire whenever any batch request completes processing. You may only have a maximum of 20 batch webhooks.

Parameters* required
enabledboolean
Whether the webhook receives requests or not.
urlstring
A valid URL for the Webhook.
MAILCHIMP_ADD_CAMPAIGNCreate a new Mailchimp campaign.54 params

Create a new Mailchimp campaign.

Parameters* required
content_typestring
How the campaign"s content is put together. The old drag and drop editor uses "template" while the new editor uses "multichannel". Defaults to template. one of template · multichannel
recipients__list__idstring
The unique list id.
recipients__segment__opts__conditionsarray
Segment match conditions. There are multiple possible types, see the [condition types documentation](https://mailchimp.com/developer/marketing/docs/alternative-schemas/#segment-condition-schemas).
recipients__segment__opts__matchstring
Segment match type.one of any · all
recipients__segment__opts__saved__segment__idinteger
The id for an existing saved segment.
rss__opts__constrain__rss__imgboolean
Whether to add CSS to images in the RSS feed to constrain their width in campaigns.
rss__opts__feed__urlstring
The URL for the RSS feed.
rss__opts__frequencystring
The frequency of the RSS Campaign.one of daily · weekly · monthly
rss__opts__schedule__daily__send__fridayboolean
Sends the daily RSS Campaign on Fridays.
rss__opts__schedule__daily__send__mondayboolean
Sends the daily RSS Campaign on Mondays.
rss__opts__schedule__daily__send__saturdayboolean
Sends the daily RSS Campaign on Saturdays.
rss__opts__schedule__daily__send__sundayboolean
Sends the daily RSS Campaign on Sundays.
rss__opts__schedule__daily__send__thursdayboolean
Sends the daily RSS Campaign on Thursdays.
rss__opts__schedule__daily__send__tuesdayboolean
Sends the daily RSS Campaign on Tuesdays.
rss__opts__schedule__daily__send__wednesdayboolean
Sends the daily RSS Campaign on Wednesdays.
rss__opts__schedule__hourinteger
The hour to send the campaign in local time. Acceptable hours are 0-23. For example, "4" would be 4am in [your account"s default time zone](https://mailchimp.com/help/set-account-defaults/).
rss__opts__schedule__monthly__send__dateinteger
The day of the month to send a monthly RSS Campaign. Acceptable days are 0-31, where "0" is always the last day of a month. Months with fewer than the selected number of days will not have an RSS c...
rss__opts__schedule__weekly__send__daystring
The day of the week to send a weekly RSS Campaign.one of sunday · monday · tuesday · wednesday · thursday · friday
settings__authenticateboolean
Whether Mailchimp [authenticated](https://mailchimp.com/help/about-email-authentication/) the campaign. Defaults to `true`.
settings__auto__fb__postarray
An array of [Facebook](https://mailchimp.com/help/connect-or-disconnect-the-facebook-integration/) page ids to auto-post to.

+34 more parameters. See the server's own documentation for the full schema.

MAILCHIMP_ADD_CAMPAIGN_FEEDBACKAdd feedback on a specific campaign.4 params

Add feedback on a specific campaign.

Parameters* required
block_idinteger
The block id for the editable block that the feedback addresses.
campaign_idstring
The unique id for the campaign.
is_completeboolean
The status of feedback.
messagestring
The content of the feedback.
MAILCHIMP_ADD_CAMPAIGN_FOLDERCreate a new campaign folder.1 params

Create a new campaign folder.

Parameters* required
namestring
Name to associate with the folder.
MAILCHIMP_ADD_CARTAdd a new cart to a store.22 params

Add a new cart to a store.

Parameters* required
campaign_idstring
A string that uniquely identifies the campaign for a cart.
checkout_urlstring
The URL for the cart. This parameter is required for [Abandoned Cart](https://mailchimp.com/help/create-an-abandoned-cart-email/) automations.
currency_codestring
The three-letter ISO 4217 code for the currency that the cart uses.
customer__address__address1string
The mailing address of the customer.
customer__address__address2string
An additional field for the customer"s mailing address.
customer__address__citystring
The city the customer is located in.
customer__address__countrystring
The customer"s country.
customer__address__country__codestring
The two-letter code for the customer"s country.
customer__address__postal__codestring
The customer"s postal or zip code.
customer__address__provincestring
The customer"s state name or normalized province.
customer__address__province__codestring
The two-letter code for the customer"s province or state.
customer__companystring
The customer"s company.
customer__email__addressstring
The customer"s email address.
customer__first__namestring
The customer"s first name.
customer__idstring
A unique identifier for the customer. Limited to 50 characters.
customer__last__namestring
The customer"s last name.
customer__opt__in__statusboolean
The customer"s opt-in status. This value will never overwrite the opt-in status of a pre-existing Mailchimp list member, but will apply to list members that are added through the e-commerce API end...
idstring
A unique identifier for the cart.
linesarray
An array of the cart"s line items.
order_totalinteger
The order total for the cart.

+2 more parameters. See the server's own documentation for the full schema.

MAILCHIMP_ADD_CART_LINE_ITEMAdd a new line item to an existing cart.7 params

Add a new line item to an existing cart.

Parameters* required
cart_idstring
The id for the cart.
idstring
A unique identifier for the cart line item.
priceinteger
The price of a cart line item.
product_idstring
A unique identifier for the product associated with the cart line item.
product_variant_idstring
A unique identifier for the product variant associated with the cart line item.
quantityinteger
The quantity of a cart line item.
store_idstring
The store id.
MAILCHIMP_ADD_CONNECTED_SITECreate a new Mailchimp connected site.2 params

Create a new Mailchimp connected site.

Parameters* required
domainstring
The connected site domain.
foreign_idstring
The unique identifier for the site.
MAILCHIMP_ADD_CUSTOMERAdd a new customer to a store.15 params

Add a new customer to a store.

Parameters* required
address__address1string
The mailing address of the customer.
address__address2string
An additional field for the customer"s mailing address.
address__citystring
The city the customer is located in.
address__countrystring
The customer"s country.
address__country__codestring
The two-letter code for the customer"s country.
address__postal__codestring
The customer"s postal or zip code.
address__provincestring
The customer"s state name or normalized province.
address__province__codestring
The two-letter code for the customer"s province or state.
companystring
The customer"s company.
email_addressstring
The customer"s email address.
first_namestring
The customer"s first name.
idstring
A unique identifier for the customer. Limited to 50 characters.
last_namestring
The customer"s last name.
opt_in_statusboolean
The customer"s opt-in status. This value will never overwrite the opt-in status of a pre-existing Mailchimp list member, but will apply to list members that are added through the e-commerce API end...
store_idstring
The store id.
MAILCHIMP_ADD_DOMAIN_TO_ACCOUNTAdd a domain to the account.1 params

Add a domain to the account.

Parameters* required
verification_emailstring
The e-mail address at the domain you want to verify. This will receive a two-factor challenge to be used in the verify action.
MAILCHIMP_ADD_EVENTAdd an event for a list member.6 params

Add an event for a list member.

Parameters* required
is_syncingboolean
Events created with the is_syncing value set to `true` will not trigger automations.
list_idstring
The unique ID for the list.
namestring
The name for this type of event ("purchased", "visited", etc). Must be 2-30 characters in length
occurred_atstring
The date and time the event occurred in ISO 8601 format.
propertiesobject
An optional list of properties
subscriber_hashstring
The MD5 hash of the lowercase version of the list member"s email address. This endpoint also accepts a list member"s email address or contact_id.
MAILCHIMP_ADD_EXPORTCreate a new account export in your Mailchimp account.2 params

Create a new account export in your Mailchimp account.

Parameters* required
include_stagesarray
The stages of an account export to include.
since_timestampstring
An ISO 8601 date that will limit the export to only records created after a given time. For instance, the reports stage will contain any campaign sent after the given timestamp. Audiences, however,...
MAILCHIMP_ADD_FILEUpload a new image or file to the File Manager.3 params

Upload a new image or file to the File Manager.

Parameters* required
file_datastring
The base64-encoded contents of the file.
folder_idinteger
The id of the folder.
namestring
The name of the file.
MAILCHIMP_ADD_FOLDERCreate a new folder in the File Manager.1 params

Create a new folder in the File Manager.

Parameters* required
namestring
The name of the folder.
MAILCHIMP_ADD_INTEREST_CATEGORYCreate a new interest category.4 params

Create a new interest category.

Parameters* required
display_orderinteger
The order that the categories are displayed in the list. Lower numbers display first.
list_idstring
The unique ID for the list.
titlestring
The text description of this category. This field appears on signup forms and is often phrased as a question.
typestring
Determines how this category’s interests appear on signup forms.one of checkboxes · dropdown · radio · hidden
MAILCHIMP_ADD_INTEREST_IN_CATEGORYCreate a new interest or 'group name' for a specific category.4 params

Create a new interest or 'group name' for a specific category.

Parameters* required
display_orderinteger
The display order for interests.
interest_category_idstring
The unique ID for the interest category.
list_idstring
The unique ID for the list.
namestring
The name of the interest. This can be shown publicly on a subscription form.
MAILCHIMP_ADD_LANDING_PAGECreate a new Mailchimp landing page.10 params

Create a new Mailchimp landing page.

Parameters* required
descriptionstring
The description of this landing page.
list_idstring
The list"s ID associated with this landing page.
namestring
The name of this landing page.
store_idstring
The ID of the store associated with this landing page.
template_idinteger
The template_id of this landing page.
titlestring
The title of this landing page seen in the browser"s title bar.
tracking__enable__restricted__data__processingboolean
Google offers restricted data processing in connection with the California Consumer Privacy Act (CCPA) to restrict how Google uses certain identifiers and other data processed in the provision of i...
tracking__track__with__mailchimpboolean
Use cookies to track unique visitors and calculate overall conversion rate. Learn more [here](https://mailchimp.com/help/use-track-mailchimp/).
typestring
The type of template the landing page has.one of signup · product
use_default_listboolean
Will create the Landing Page using the account"s Default List instead of requiring a list_id.
MAILCHIMP_ADD_LISTCreate a new list in your Mailchimp account.20 params

Create a new list in your Mailchimp account.

Parameters* required
campaign__defaults__from__emailstring
The default from email for campaigns sent to this list.
campaign__defaults__from__namestring
The default from name for campaigns sent to this list.
campaign__defaults__languagestring
The default language for this lists"s forms.
campaign__defaults__subjectstring
The default subject line for campaigns sent to this list.
contact__address1string
The street address for the list contact.
contact__address2string
The street address for the list contact.
contact__citystring
The city for the list contact.
contact__companystring
The company name for the list.
contact__countrystring
A two-character ISO3166 country code. Defaults to US if invalid.
contact__phonestring
The phone number for the list contact.
contact__statestring
The state for the list contact.
contact__zipstring
The postal or zip code for the list contact.
double_optinboolean
Whether or not to require the subscriber to confirm subscription via email. default: false
email_type_optionboolean
Whether the list supports [multiple formats for emails](https://mailchimp.com/help/change-audience-name-defaults/). When set to `true`, subscribers can choose whether they want to receive HTML or p...
marketing_permissionsboolean
Whether or not the list has marketing permissions (eg. GDPR) enabled.default: false
namestring
The name of the list.
notify_on_subscribestring
The email address to send [subscribe notifications](https://mailchimp.com/help/change-subscribe-and-unsubscribe-notifications/) to. default: False
notify_on_unsubscribestring
The email address to send [unsubscribe notifications](https://mailchimp.com/help/change-subscribe-and-unsubscribe-notifications/) to. default: False
permission_reminderstring
The [permission reminder](https://mailchimp.com/help/edit-the-permission-reminder/) for the list.
use_archive_barboolean
Whether campaigns for this list use the [Archive Bar](https://mailchimp.com/help/about-email-campaign-archives-and-pages/) in archives by default. default: false
MAILCHIMP_ADD_MEMBER_NOTEAdd a new note for a specific subscriber.3 params

Add a new note for a specific subscriber.

Parameters* required
list_idstring
The unique ID for the list.
notestring
The content of the note. Note length is limited to 1,000 characters.
subscriber_hashstring
The MD5 hash of the lowercase version of the list member"s email address.
MAILCHIMP_ADD_MEMBER_TO_LISTAdd a new member to the list.17 params

Add a new member to the list.

Parameters* required
email_addressstring
Email address for a subscriber.
email_typestring
Type of email this member asked to get ("html" or "text").
interestsobject
The key of this object"s properties is the ID of the interest in question.
ip_optstring
The IP address the subscriber used to confirm their opt-in status.
ip_signupstring
IP address the subscriber signed up from.
languagestring
If set/detected, the [subscriber"s language](https://mailchimp.com/help/view-and-edit-contact-languages/).
list_idstring
The unique ID for the list.
location__latitudeinteger
The location latitude.
location__longitudeinteger
The location longitude.
marketing_permissionsarray
The marketing permissions for the subscriber.
merge_fieldsobject
A dictionary of merge fields where the keys are the merge tags. See the [Merge Fields documentation](https://mailchimp.com/developer/marketing/docs/merge-fields/#structure) for more about the struc...
skip_merge_validationboolean
If skip_merge_validation is true, member data will be accepted without merge field values, even if the merge field is usually required. This defaults to false.
statusstring
Subscriber"s current status.one of subscribed · unsubscribed · cleaned · pending · transactional
tagsarray
The tags that are associated with a member.
timestamp_optstring
The date and time the subscriber confirmed their opt-in status in ISO 8601 format.
timestamp_signupstring
The date and time the subscriber signed up for the list in ISO 8601 format.
vipboolean
[VIP status](https://mailchimp.com/help/designate-and-send-to-vip-contacts/) for subscriber.
MAILCHIMP_ADD_MEMBER_TO_SEGMENTAdd a member to a static segment.3 params

Add a member to a static segment.

Parameters* required
email_addressstring
Email address for a subscriber.
list_idstring
The unique ID for the list.
segment_idstring
The unique id for the segment.
MAILCHIMP_ADD_MERGE_FIELDAdd a new merge field for a specific audience.14 params

Add a new merge field for a specific audience.

Parameters* required
default_valuestring
The default value for the merge field if `null`.
display_orderinteger
The order that the merge field displays on the list signup form.
help_textstring
Extra text to help the subscriber fill out the form.
list_idstring
The unique ID for the list.
namestring
The name of the merge field (audience field).
options__choicesarray
In a radio or dropdown non-group field, the available options for contacts to pick from.
options__date__formatstring
In a date or birthday field, the format of the date.
options__default__countryinteger
In an address field, the default country code if none supplied.
options__phone__formatstring
In a phone field, the phone number type: US or International.
options__sizeinteger
In a text field, the default length of the text field.
publicboolean
Whether the merge field is displayed on the signup form.
requiredboolean
Whether the merge field is required to import a contact.
tagstring
The merge tag used for Mailchimp campaigns and [adding contact information](https://mailchimp.com/developer/marketing/docs/merge-fields/#add-merge-data-to-contacts).
typestring
The [type](https://mailchimp.com/developer/marketing/docs/merge-fields/#structure) for the merge field. one of text · number · address · phone · date · url
MAILCHIMP_ADD_ORDERAdd a new order to a store.62 params

Add a new order to a store.

Parameters* required
billing__address__address1string
The billing address for the order.
billing__address__address2string
An additional field for the billing address.
billing__address__citystring
The city in the billing address.
billing__address__companystring
The company associated with the billing address.
billing__address__countrystring
The country in the billing address.
billing__address__country__codestring
The two-letter code for the country in the billing address.
billing__address__latitudeinteger
The latitude for the billing address location.
billing__address__longitudeinteger
The longitude for the billing address location.
billing__address__namestring
The name associated with the billing address.
billing__address__phonestring
The phone number for the billing address
billing__address__postal__codestring
The postal or zip code in the billing address.
billing__address__provincestring
The state or normalized province in the billing address.
billing__address__province__codestring
The two-letter code for the province in the billing address.
campaign_idstring
A string that uniquely identifies the campaign for an order.
cancelled_at_foreignstring
The date and time the order was cancelled in ISO 8601 format. Note: passing a value for this parameter will cancel the order being created.
currency_codestring
The three-letter ISO 4217 code for the currency that the store accepts.
customer__address__address1string
The mailing address of the customer.
customer__address__address2string
An additional field for the customer"s mailing address.
customer__address__citystring
The city the customer is located in.
customer__address__countrystring
The customer"s country.

+42 more parameters. See the server's own documentation for the full schema.

MAILCHIMP_ADD_ORDER_LINE_ITEMAdd a new line item to an existing order.8 params

Add a new line item to an existing order.

Parameters* required
discountinteger
The total discount amount applied to this line item.
idstring
A unique identifier for the order line item.
order_idstring
The id for the order in a store.
priceinteger
The price of an order line item.
product_idstring
A unique identifier for the product associated with the order line item.
product_variant_idstring
A unique identifier for the product variant associated with the order line item.
quantityinteger
The quantity of an order line item.
store_idstring
The store id.
MAILCHIMP_ADD_OR_REMOVE_MEMBER_TAGSAdd or remove tags from a list member. If a tag that does not exist is passed in and set as 'active', a new tag will be created.4 params

Add or remove tags from a list member. If a tag that does not exist is passed in and set as 'active', a new tag will be created.

Parameters* required
is_syncingboolean
When is_syncing is true, automations based on the tags in the request will not fire
list_idstring
The unique ID for the list.
subscriber_hashstring
The MD5 hash of the lowercase version of the list member"s email address.
tagsarray
A list of tags assigned to the list member.
MAILCHIMP_ADD_OR_UPDATE_CUSTOMERAdd or update a customer.16 params

Add or update a customer.

Parameters* required
address__address1string
The mailing address of the customer.
address__address2string
An additional field for the customer"s mailing address.
address__citystring
The city the customer is located in.
address__countrystring
The customer"s country.
address__country__codestring
The two-letter code for the customer"s country.
address__postal__codestring
The customer"s postal or zip code.
address__provincestring
The customer"s state name or normalized province.
address__province__codestring
The two-letter code for the customer"s province or state.
companystring
The customer"s company.
customer_idstring
The id for the customer of a store.
email_addressstring
The customer"s email address.
first_namestring
The customer"s first name.
idstring
A unique identifier for the customer. Limited to 50 characters.
last_namestring
The customer"s last name.
opt_in_statusboolean
The customer"s opt-in status. This value will never overwrite the opt-in status of a pre-existing Mailchimp list member, but will apply to list members that are added through the e-commerce API end...
store_idstring
The store id.
MAILCHIMP_ADD_OR_UPDATE_LIST_MEMBERAdd or update a list member.18 params

Add or update a list member.

Parameters* required
email_addressstring
Email address for a subscriber. This value is required only if the email address is not already present on the list.
email_typestring
Type of email this member asked to get ("html" or "text").
interestsobject
The key of this object"s properties is the ID of the interest in question.
ip_optstring
The IP address the subscriber used to confirm their opt-in status.
ip_signupstring
IP address the subscriber signed up from.
languagestring
If set/detected, the [subscriber"s language](https://mailchimp.com/help/view-and-edit-contact-languages/).
list_idstring
The unique ID for the list.
location__latitudeinteger
The location latitude.
location__longitudeinteger
The location longitude.
marketing_permissionsarray
The marketing permissions for the subscriber.
merge_fieldsobject
A dictionary of merge fields where the keys are the merge tags. See the [Merge Fields documentation](https://mailchimp.com/developer/marketing/docs/merge-fields/#structure) for more about the struc...
skip_merge_validationboolean
If skip_merge_validation is true, member data will be accepted without merge field values, even if the merge field is usually required. This defaults to false.
statusstring
Subscriber"s current status.one of subscribed · unsubscribed · cleaned · pending · transactional
status_if_newstring
Subscriber"s status. This value is required only if the email address is not already present on the list. one of subscribed · unsubscribed · cleaned · pending · transactional
subscriber_hashstring
The MD5 hash of the lowercase version of the list member"s email address. This endpoint also accepts a list member"s email address or contact_id.
timestamp_optstring
The date and time the subscriber confirmed their opt-in status in ISO 8601 format.
timestamp_signupstring
The date and time the subscriber signed up for the list in ISO 8601 format.
vipboolean
[VIP status](https://mailchimp.com/help/designate-and-send-to-vip-contacts/) for subscriber.
MAILCHIMP_ADD_OR_UPDATE_PRODUCT_VARIANTAdd or update a product variant.12 params

Add or update a product variant.

Parameters* required
backordersstring
The backorders of a product variant.
idstring
A unique identifier for the product variant.
image_urlstring
The image URL for a product variant.
inventory_quantityinteger
The inventory quantity of a product variant.
priceinteger
The price of a product variant.
product_idstring
The id for the product of a store.
skustring
The stock keeping unit (SKU) of a product variant.
store_idstring
The store id.
titlestring
The title of a product variant.
urlstring
The URL for a product variant.
variant_idstring
The id for the product variant.
visibilitystring
The visibility of a product variant.
MAILCHIMP_ADD_PRODUCTAdd a new product to a store.12 params

Add a new product to a store.

Parameters* required
descriptionstring
The description of a product.
handlestring
The handle of a product.
idstring
A unique identifier for the product.
image_urlstring
The image URL for a product.
imagesarray
An array of the product"s images.
published_at_foreignstring
The date and time the product was published.
store_idstring
The store id.
titlestring
The title of a product.
typestring
The type of product.
urlstring
The URL for a product.
variantsarray
An array of the product"s variants. At least one variant is required for each product. A variant can use the same `id` and `title` as the parent product.
vendorstring
The vendor for a product.
MAILCHIMP_ADD_PRODUCT_IMAGEAdd a new image to the product.5 params

Add a new image to the product.

Parameters* required
idstring
A unique identifier for the product image.
product_idstring
The id for the product of a store.
store_idstring
The store id.
urlstring
The URL for a product image.
variant_idsarray
The list of product variants using the image.
MAILCHIMP_ADD_PRODUCT_VARIANTAdd a new variant to the product.11 params

Add a new variant to the product.

Parameters* required
backordersstring
The backorders of a product variant.
idstring
A unique identifier for the product variant.
image_urlstring
The image URL for a product variant.
inventory_quantityinteger
The inventory quantity of a product variant.
priceinteger
The price of a product variant.
product_idstring
The id for the product of a store.
skustring
The stock keeping unit (SKU) of a product variant.
store_idstring
The store id.
titlestring
The title of a product variant.
urlstring
The URL for a product variant.
visibilitystring
The visibility of a product variant.
MAILCHIMP_ADD_PROMO_CODEAdd a new promo code to a store.9 params

Add a new promo code to a store.

Parameters* required
codestring
The discount code. Restricted to UTF-8 characters with max length 50.
created_at_foreignstring
The date and time the promotion was created in ISO 8601 format.
enabledboolean
Whether the promo code is currently enabled.
idstring
A unique identifier for the promo code. Restricted to UTF-8 characters with max length 50.
promo_rule_idstring
The id for the promo rule of a store.
redemption_urlstring
The url that should be used in the promotion campaign restricted to UTF-8 characters with max length 2000.
store_idstring
The store id.
updated_at_foreignstring
The date and time the promotion was updated in ISO 8601 format.
usage_countinteger
Number of times promo code has been used.
MAILCHIMP_ADD_PROMO_RULEAdd a new promo rule to a store.12 params

Add a new promo rule to a store.

Parameters* required
amountinteger
The amount of the promo code discount. If "type" is "fixed", the amount is treated as a monetary value. If "type" is "percentage", amount must be a decimal value between 0.0 and 1.0, inclusive.
created_at_foreignstring
The date and time the promotion was created in ISO 8601 format.
descriptionstring
The description of a promotion restricted to UTF-8 characters with max length 255.
enabledboolean
Whether the promo rule is currently enabled.
ends_atstring
The date and time when the promotion ends. Must be after starts_at and in ISO 8601 format.
idstring
A unique identifier for the promo rule. If Ecommerce platform does not support promo rule, use promo code id as promo rule id. Restricted to UTF-8 characters with max length 50.
starts_atstring
The date and time when the promotion is in effect in ISO 8601 format.
store_idstring
The store id.
targetstring
The target that the discount applies to.one of per_item · total · shipping
titlestring
The title that will show up in promotion campaign. Restricted to UTF-8 characters with max length of 100 bytes.
typestring
Type of discount. For free shipping set type to fixed.one of fixed · percentage
updated_at_foreignstring
The date and time the promotion was updated in ISO 8601 format.
MAILCHIMP_ADD_SEGMENTCreate a new segment in a specific list.5 params

Create a new segment in a specific list.

Parameters* required
list_idstring
The unique ID for the list.
namestring
The name of the segment.
options__conditionsarray
Segment match conditions. There are multiple possible types, see the [condition types documentation](https://mailchimp.com/developer/marketing/docs/alternative-schemas/#segment-condition-schemas).
options__matchstring
Match type.one of any · all
static_segmentarray
An array of emails to be used for a static segment. Any emails provided that are not present on the list will be ignored. Passing an empty array will create a static segment without any subscribers...
MAILCHIMP_ADD_STOREAdd a new store to your Mailchimp account.22 params

Add a new store to your Mailchimp account.

Parameters* required
address__address1string
The store"s mailing address.
address__address2string
An additional field for the store"s mailing address.
address__citystring
The city the store is located in.
address__countrystring
The store"s country.
address__country__codestring
The two-letter code for to the store"s country.
address__latitudeinteger
The latitude of the store location.
address__longitudeinteger
The longitude of the store location.
address__postal__codestring
The store"s postal or zip code.
address__provincestring
The store"s state name or normalized province.
address__province__codestring
The two-letter code for the store"s province or state.
currency_codestring
The three-letter ISO 4217 code for the currency that the store accepts.
domainstring
The store domain. This parameter is required for Connected Sites and Google Ads.
email_addressstring
The email address for the store.
idstring
The unique identifier for the store.
is_syncingboolean
Whether to disable automations because the store is currently [syncing](https://mailchimp.com/developer/marketing/docs/e-commerce/#pausing-store-automations).
list_idstring
The unique identifier for the list associated with the store. The `list_id` for a specific store cannot change.
money_formatstring
The currency format for the store. For example: `$`, `£`, etc.
namestring
The name of the store.
phonestring
The store phone number.
platformstring
The e-commerce platform of the store.

+2 more parameters. See the server's own documentation for the full schema.

MAILCHIMP_ADD_SUBSCRIBER_TO_WORKFLOW_EMAILManually add a subscriber to a workflow, bypassing the default trigger settings. You can also use this endpoint to trigger a series of automated emails in an API 3.0 workflow type.3 params

Manually add a subscriber to a workflow, bypassing the default trigger settings. You can also use this endpoint to trigger a series of automated emails in an API 3.0 workflow type.

Parameters* required
email_addressstring
The list member"s email address.
workflow_email_idstring
The unique id for the Automation workflow email.
workflow_idstring
The unique id for the Automation workflow.
MAILCHIMP_ADD_TEMPLATECreate a new template for the account. Only Classic templates are supported.3 params

Create a new template for the account. Only Classic templates are supported.

Parameters* required
folder_idstring
The id of the folder the template is currently in.
htmlstring
The raw HTML for the template. We support the Mailchimp [Template Language](https://mailchimp.com/help/getting-started-with-mailchimps-template-language/) in any HTML code passed via the API.
namestring
The name of the template.
MAILCHIMP_ADD_TEMPLATE_FOLDERCreate a new template folder.1 params

Create a new template folder.

Parameters* required
namestring
The name of the folder.
MAILCHIMP_ADD_WEBHOOKCreate a new webhook for a specific list.11 params

Create a new webhook for a specific list.

Parameters* required
events__campaignboolean
Whether the webhook is triggered when a campaign is sent or cancelled.
events__cleanedboolean
Whether the webhook is triggered when a subscriber"s email address is cleaned from the list.
events__profileboolean
Whether the webhook is triggered when a subscriber"s profile is updated.
events__subscribeboolean
Whether the webhook is triggered when a list subscriber is added.
events__unsubscribeboolean
Whether the webhook is triggered when a list member unsubscribes.
events__upemailboolean
Whether the webhook is triggered when a subscriber"s email address is changed.
list_idstring
The unique ID for the list.
sources__adminboolean
Whether the webhook is triggered by admin-initiated actions in the web interface.
sources__apiboolean
Whether the webhook is triggered by actions initiated via the API.
sources__userboolean
Whether the webhook is triggered by subscriber-initiated actions.
urlstring
A valid URL for the Webhook.
MAILCHIMP_ARCHIVE_AUTOMATIONArchiving will permanently end your automation and keep the report data. You’ll be able to replicate your archived automation, but you can’t restart it.1 params

Archiving will permanently end your automation and keep the report data. You’ll be able to replicate your archived automation, but you can’t restart it.

Parameters* required
workflow_idstring
The unique id for the Automation workflow.
MAILCHIMP_ARCHIVE_LIST_MEMBERArchive a list member. To permanently delete, use the delete-permanent action.2 params

Archive a list member. To permanently delete, use the delete-permanent action.

Parameters* required
list_idstring
The unique ID for the list.
subscriber_hashstring
The MD5 hash of the lowercase version of the list member"s email address. This endpoint also accepts a list member"s email address or contact_id.
MAILCHIMP_BATCH_ADD_OR_REMOVE_MEMBERSBatch add/remove list members to static segment4 params

Batch add/remove list members to static segment

Parameters* required
list_idstring
The unique ID for the list.
members_to_addarray
An array of emails to be used for a static segment. Any emails provided that are not present on the list will be ignored. A maximum of 500 members can be sent.
members_to_removearray
An array of emails to be used for a static segment. Any emails provided that are not present on the list will be ignored. A maximum of 500 members can be sent.
segment_idstring
The unique id for the segment.
MAILCHIMP_BATCH_SUBSCRIBE_OR_UNSUBSCRIBEBatch subscribe or unsubscribe list members.6 params

Batch subscribe or unsubscribe list members.

Parameters* required
list_idstring
The unique ID for the list.
membersarray
An array of objects, each representing an email address and the subscription status for a specific list. Up to 500 members may be added or updated with each API call.
skip_duplicate_checkboolean
If skip_duplicate_check is true, we will ignore duplicates sent in the request when using the batch sub/unsub on the lists endpoint. The status of the first appearance in the request will be saved....
skip_merge_validationboolean
If skip_merge_validation is true, member data will be accepted without merge field values, even if the merge field is usually required. This defaults to false.
sync_tagsboolean
Whether this batch operation will replace all existing tags with tags in request.
update_existingboolean
Whether this batch operation will change existing members" subscription status.
MAILCHIMP_CAMPAIGN_ABUSE_REPORT_DETAILSGet information about a specific abuse report for a campaign.4 params

Get information about a specific abuse report for a campaign.

Parameters* required
campaign_idstring
The unique id for the campaign.
exclude_fieldsarray
A comma-separated list of fields to exclude. Reference parameters of sub-objects with dot notation.
fieldsarray
A comma-separated list of fields to return. Reference parameters of sub-objects with dot notation.
report_idstring
The id for the abuse report.
MAILCHIMP_CAMPAIGN_STATISTICS_FEEDBACKGet feedback based on a campaign's statistics. Advice feedback is based on campaign stats like opens, clicks, unsubscribes, bounces, and more.3 params

Get feedback based on a campaign's statistics. Advice feedback is based on campaign stats like opens, clicks, unsubscribes, bounces, and more.

Parameters* required
campaign_idstring
The unique id for the campaign.
exclude_fieldsarray
A comma-separated list of fields to exclude. Reference parameters of sub-objects with dot notation.
fieldsarray
A comma-separated list of fields to return. Reference parameters of sub-objects with dot notation.
MAILCHIMP_CANCEL_CAMPAIGNCancel a Regular or Plain-Text Campaign after you send, before all of your recipients receive it. This feature is included with Mailchimp Pro.1 params

Cancel a Regular or Plain-Text Campaign after you send, before all of your recipients receive it. This feature is included with Mailchimp Pro.

Parameters* required
campaign_idstring
The unique id for the campaign.
MAILCHIMP_CREATE_A_SURVEY_CAMPAIGNUtilize the List ID and Survey ID to generate a Campaign that links to your survey.2 params

Utilize the List ID and Survey ID to generate a Campaign that links to your survey.

Parameters* required
list_idstring
The unique ID for the list.
survey_idstring
The ID of the survey.
MAILCHIMP_CUSTOMER_JOURNEYS_API_TRIGGER_FOR_A_CONTACTCreate a trigger step in the Customer Journey builder via the API. Use the provided URL with {journey_id} and {step_id} to activate conditions for a contact.3 params

Create a trigger step in the Customer Journey builder via the API. Use the provided URL with {journey_id} and {step_id} to activate conditions for a contact.

Parameters* required
email_addressstring
The list member"s email address.
journey_idinteger
The id for the Journey.
step_idinteger
The id for the Step.
MAILCHIMP_CUSTOMIZE_SIGNUP_FORMCustomize a list's default signup form.14 params

Customize a list's default signup form.

Parameters* required
contentsarray
The signup form body content.
header__image__alignstring
Image alignment.one of none · left · center · right
header__image__altstring
Alt text for the image.
header__image__border__colorstring
Image border color.
header__image__border__stylestring
Image border style.one of none · solid · dotted · dashed · double · groove
header__image__border__widthstring
Image border width.
header__image__heightstring
Image height, in pixels.
header__image__linkstring
The URL that the header image will link to.
header__image__targetstring
Image link target.one of _blank · null
header__image__urlstring
Header image URL.
header__image__widthstring
Image width, in pixels.
header__textstring
Header text.
list_idstring
The unique ID for the list.
stylesarray
An array of objects, each representing an element style for the signup form.
MAILCHIMP_DELETE_BATCH_REQUESTStops a batch request from running. Since only one batch request is run at a time, this can be used to cancel a long running request. The results of any completed operations will not be available after this call.1 params

Stops a batch request from running. Since only one batch request is run at a time, this can be used to cancel a long running request. The results of any completed operations will not be available after this call.

Parameters* required
batch_idstring
The unique id for the batch operation.
MAILCHIMP_DELETE_BATCH_WEBHOOKRemove a batch webhook. Webhooks will no longer be sent to the given URL.1 params

Remove a batch webhook. Webhooks will no longer be sent to the given URL.

Parameters* required
batch_webhook_idstring
The unique id for the batch webhook.
MAILCHIMP_DELETE_CAMPAIGNRemove a campaign from your Mailchimp account.1 params

Remove a campaign from your Mailchimp account.

Parameters* required
campaign_idstring
The unique id for the campaign.
MAILCHIMP_DELETE_CAMPAIGN_FEEDBACK_MESSAGERemove a specific feedback message for a campaign.2 params

Remove a specific feedback message for a campaign.

Parameters* required
campaign_idstring
The unique id for the campaign.
feedback_idstring
The unique id for the feedback message.
MAILCHIMP_DELETE_CAMPAIGN_FOLDERDelete a specific campaign folder, and mark all the campaigns in the folder as 'unfiled'.1 params

Delete a specific campaign folder, and mark all the campaigns in the folder as 'unfiled'.

Parameters* required
folder_idstring
The unique id for the campaign folder.
MAILCHIMP_DELETE_CARTDelete a cart.2 params

Delete a cart.

Parameters* required
cart_idstring
The id for the cart.
store_idstring
The store id.
MAILCHIMP_DELETE_CART_LINE_ITEMDelete a specific cart line item.3 params

Delete a specific cart line item.

Parameters* required
cart_idstring
The id for the cart.
line_idstring
The id for the line item of a cart.
store_idstring
The store id.
MAILCHIMP_DELETE_CONNECTED_SITERemove a connected site from your Mailchimp account.1 params

Remove a connected site from your Mailchimp account.

Parameters* required
connected_site_idstring
The unique identifier for the site.
MAILCHIMP_DELETE_CUSTOMERDelete a customer from a store.2 params

Delete a customer from a store.

Parameters* required
customer_idstring
The id for the customer of a store.
store_idstring
The store id.
MAILCHIMP_DELETE_DOMAINDelete a verified domain from the account.1 params

Delete a verified domain from the account.

Parameters* required
domain_namestring
The domain name.
MAILCHIMP_DELETE_FILERemove a specific file from the File Manager.1 params

Remove a specific file from the File Manager.

Parameters* required
file_idstring
The unique id for the File Manager file.
MAILCHIMP_DELETE_FOLDERDelete a specific folder in the File Manager.1 params

Delete a specific folder in the File Manager.

Parameters* required
folder_idstring
The unique id for the File Manager folder.
MAILCHIMP_DELETE_INTEREST_CATEGORYDelete a specific interest category.2 params

Delete a specific interest category.

Parameters* required
interest_category_idstring
The unique ID for the interest category.
list_idstring
The unique ID for the list.
MAILCHIMP_DELETE_INTEREST_IN_CATEGORYDelete interests or group names in a specific category.3 params

Delete interests or group names in a specific category.

Parameters* required
interest_category_idstring
The unique ID for the interest category.
interest_idstring
The specific interest or "group name".
list_idstring
The unique ID for the list.
MAILCHIMP_DELETE_LANDING_PAGEDelete a landing page.1 params

Delete a landing page.

Parameters* required
page_idstring
The unique id for the page.
MAILCHIMP_DELETE_LISTDelete a list from your Mailchimp account. If you delete a list, you'll lose the list history—including subscriber activity, unsubscribes, complaints, and bounces. You’ll also lose subscribers’ email addresses, unless you exported and backed up your list.1 params

Delete a list from your Mailchimp account. If you delete a list, you'll lose the list history—including subscriber activity, unsubscribes, complaints, and bounces. You’ll also lose subscribers’ email addresses, unless you exported and backed up your list.

Parameters* required
list_idstring
The unique ID for the list.
MAILCHIMP_DELETE_LIST_MEMBERDelete all personally identifiable information related to a list member, and remove them from a list. This will make it impossible to re-import the list member.2 params

Delete all personally identifiable information related to a list member, and remove them from a list. This will make it impossible to re-import the list member.

Parameters* required
list_idstring
The unique ID for the list.
subscriber_hashstring
The MD5 hash of the lowercase version of the list member"s email address.
MAILCHIMP_DELETE_MERGE_FIELDDelete a specific merge field.2 params

Delete a specific merge field.

Parameters* required
list_idstring
The unique ID for the list.
merge_idstring
The id for the merge field.
MAILCHIMP_DELETE_NOTEDelete a specific note for a specific list member.3 params

Delete a specific note for a specific list member.

Parameters* required
list_idstring
The unique ID for the list.
note_idstring
The id for the note.
subscriber_hashstring
The MD5 hash of the lowercase version of the list member"s email address. This endpoint also accepts a list member"s email address or contact_id.
MAILCHIMP_DELETE_ORDERDelete an order.2 params

Delete an order.

Parameters* required
order_idstring
The id for the order in a store.
store_idstring
The store id.
MAILCHIMP_DELETE_ORDER_LINE_ITEMDelete a specific order line item.3 params

Delete a specific order line item.

Parameters* required
line_idstring
The id for the line item of an order.
order_idstring
The id for the order in a store.
store_idstring
The store id.
MAILCHIMP_DELETE_PRODUCTDelete a product.2 params

Delete a product.

Parameters* required
product_idstring
The id for the product of a store.
store_idstring
The store id.
MAILCHIMP_DELETE_PRODUCT_IMAGEDelete a product image.3 params

Delete a product image.

Parameters* required
image_idstring
The id for the product image.
product_idstring
The id for the product of a store.
store_idstring
The store id.
MAILCHIMP_DELETE_PRODUCT_VARIANTDelete a product variant.3 params

Delete a product variant.

Parameters* required
product_idstring
The id for the product of a store.
store_idstring
The store id.
variant_idstring
The id for the product variant.
MAILCHIMP_DELETE_PROMO_CODEDelete a promo code from a store.3 params

Delete a promo code from a store.

Parameters* required
promo_code_idstring
The id for the promo code of a store.
promo_rule_idstring
The id for the promo rule of a store.
store_idstring
The store id.
MAILCHIMP_DELETE_PROMO_RULEDelete a promo rule from a store.2 params

Delete a promo rule from a store.

Parameters* required
promo_rule_idstring
The id for the promo rule of a store.
store_idstring
The store id.
MAILCHIMP_DELETE_SEGMENTDelete a specific segment in a list.2 params

Delete a specific segment in a list.

Parameters* required
list_idstring
The unique ID for the list.
segment_idstring
The unique id for the segment.
MAILCHIMP_DELETE_STOREDelete a store. Deleting a store will also delete any associated subresources, including Customers, Orders, Products, and Carts.1 params

Delete a store. Deleting a store will also delete any associated subresources, including Customers, Orders, Products, and Carts.

Parameters* required
store_idstring
The store id.
MAILCHIMP_DELETE_TEMPLATEDelete a specific template.1 params

Delete a specific template.

Parameters* required
template_idstring
The unique id for the template.
MAILCHIMP_DELETE_TEMPLATE_FOLDERDelete a specific template folder, and mark all the templates in the folder as 'unfiled'.1 params

Delete a specific template folder, and mark all the templates in the folder as 'unfiled'.

Parameters* required
folder_idstring
The unique id for the template folder.
MAILCHIMP_DELETE_WEBHOOKDelete a specific webhook in a list.2 params

Delete a specific webhook in a list.

Parameters* required
list_idstring
The unique ID for the list.
webhook_idstring
The webhook"s id.

@cyanheads/mailchimp-mcp-server

Draft, test, and send Mailchimp campaigns straight from your MCP client — with audience management, subscriber CRUD, and post-send analytics behind safe-by-default send gates. STDIO or Streamable HTTP.

18 Tools (+2 conditional) • 4 Resources • 1 Prompt

npm Version License Docker MCP SDK TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework


Tools

Eighteen always-on tools plus two conditional ones — mailchimp_assets (when MAILCHIMP_ASSETS_DIR is set) and mailchimp_local_templates (when MAILCHIMP_TEMPLATES_DIR is set). Workflow helpers orchestrate common flows end-to-end, primitive tools expose fine-grained CRUD, and the instruction tool returns procedural guidance merged with live account state.

Tool NameDescription
mailchimp_accountAccount profile, plan, data center, total subscribers, and the Chimp Chatter activity feed.
mailchimp_audiencesManage audiences (lists) — read, create/update, per-audience analytics, signup-form config. No delete.
mailchimp_audience_overviewOne-call audience health digest: info, stats, growth history, top email clients, merge-field schema.
mailchimp_subscribersSubscriber CRUD + tags/notes/activity. archive is the strongest delete available.
mailchimp_upsert_subscriberAdd or update a subscriber idempotently with status, merge fields, tags, and optional note.
mailchimp_find_subscriberLocate a subscriber by email in one audience or across the account.
mailchimp_import_subscribersBatch add/update subscribers (capped at 500/call). Status defaults to pending (double-opt-in).
mailchimp_segmentsCRUD for audience segments (saved, static, fuzzy) plus member listing and batch add/remove.
mailchimp_merge_fieldsRead + create/update custom subscriber attributes. No delete — drops data across all subscribers.
mailchimp_campaignsCampaign record management: list/get/create/update, replicate, content, checklist, RSS/resend controls.
mailchimp_send_campaignCompose and send (or schedule/test) a campaign in one call. Requests re-entrant human confirmation before send/schedule mutations.
mailchimp_replicate_campaignDuplicate a campaign with optional overrides, then draft/test/send/schedule. Same confirmation + cleanup semantics.
mailchimp_reportsCampaign reports — generic slicer across ten dimensions (clicks, opens, locations, etc.).
mailchimp_campaign_reportPost-send analytics digest — headline metrics + top 5 slices in one response.
mailchimp_templatesEmail template read/write — reads (list/get) work on free for base/user types; writes (create/update/delete) and gallery require a paid plan.
mailchimp_filesFile Manager (Content Studio) — upload, list, fetch, rename, delete files on Mailchimp's CDN. Embed the returned fullSizeUrl in campaign HTML. Works on free; 1 MB per image / 10 MB per other file.
mailchimp_searchGlobal search across members or campaigns. Lightweight discovery — use find_subscriber for detail.
mailchimp_assets (conditional — set MAILCHIMP_ASSETS_DIR)Local-assets surface. List your assets dir, inspect cache state, pre-warm uploads ahead of a send. Most workflows don't call this directly — @assets/<path> references in campaign HTML auto-upload via mailchimp_send_campaign and mailchimp_campaigns set-content.
mailchimp_local_templates (conditional — set MAILCHIMP_TEMPLATES_DIR)Local-template authoring surface. List/get/render-preview your .eta templates with optional <name>.meta.yaml sidecars. seed-from-mailchimp bootstraps a local template from a Mailchimp base/user starter. Use content.localTemplate on campaign tools to render at send time. Canonical write path on free-tier Mailchimp, where the upstream templates API is read-only.
mailchimp_playbookReturns a structured procedural playbook merged with live account state. Advice-only, no writes.

mailchimp_send_campaign

Compose and send (or schedule/test) a campaign in one call.

  • Chains create → content → checklist → optional test → send/schedule
  • Requests human confirmation through a re-entrant input round before any campaign mutation when mode: 'send' | 'schedule'
  • Auto-deletes failed drafts when cleanupOnError: true (default); declined confirmation leaves a reviewable draft
  • Supports html, plaintext, templateId + templateSections, and local Eta template content forms

mailchimp_replicate_campaign

Duplicate an existing campaign with optional overrides, then send/schedule/test or leave as draft.

  • Overrides: subject, from name, reply-to, audience, segment, content
  • Same re-entrant confirmation + cleanup semantics as mailchimp_send_campaign
  • Tuned for the common "send v2 of last week's newsletter with an updated intro" pattern

mailchimp_upsert_subscriber

Add or update a subscriber in one idempotent call.

  • Declarative tag sync — pass the desired active set and the tool computes the add/remove delta
  • preserveTags protects named segment memberships (Mailchimp stores static-segment membership as tags)
  • status: 'pending' triggers Mailchimp's double-opt-in email; 'subscribed' requires documented consent
  • PUT /members/{hash} for create path, PATCH for update to skip re-validating pre-existing merge fields

mailchimp_import_subscribers

Batch add (and optionally update) subscribers in one call.

  • Capped at 500 rows per call — chunk larger imports client-side
  • Status defaults to pending (double-opt-in) to prevent accidental mass-sends
  • Returns per-row succeeded/failed with error reasons

mailchimp_campaign_report

Aggregated post-send analytics for a campaign.

  • Headline delivery metrics: sent, bounces, abuse reports
  • Engagement: opens, clicks, unsubscribes
  • Top-N clicked links, locations, recent unsubscribes
  • Industry benchmarks when available
  • Use mailchimp_reports with operation: 'slice' for a single dimension in detail

mailchimp_audience_overview

Single-call audience health digest — answers "what does this audience look like?" in one request.

  • Audience info + live stats
  • Configurable months of growth history
  • Top email clients
  • Full merge-field schema
  • Recent activity

mailchimp_playbook

Returns a structured procedural playbook merged with live account state. Advice-only — the agent executes subsequent steps with other tools.

  • Topics: send, post-send-review, deliverability, list-hygiene, onboarding, subscriber-triage, design-campaign
  • Returns markdown instructions + a live-state snapshot
  • nextToolSuggestions pre-fills arguments for the next likely tool call

Resources and prompts

TypeNameDescription
Resourcemailchimp://accountAccount info snapshot — profile, plan, data center, total subscribers.
Resourcemailchimp://audiences/{audienceId}Audience snapshot — name, contact, stats, double-opt-in status.
Resourcemailchimp://campaigns/{campaignId}Campaign snapshot — status, settings, recipients summary.
Resourcemailchimp://campaigns/{campaignId}/reportPost-send campaign report headline metrics.
Promptnewsletter_from_sourceUser-invokable starter — compose a monthly editorial newsletter from a URL or brief. Chains into mailchimp_playbook (topic: design-campaign) and walks the draft → test → send flow.

All resource data is also reachable via tools. Large collections (audiences, campaigns) are not exposed as resources — use the list operation on the corresponding tool instead. Design reference for the prompt: docs/email-design-playbook.md.

Features

Built on @cyanheads/mcp-ts-core:

  • Declarative tool, resource, and prompt definitions — single file per primitive, framework handles registration and validation
  • Unified error handling — handlers throw, framework catches, classifies, and formats
  • Pluggable auth: none, jwt, oauth
  • Structured logging with optional OpenTelemetry tracing
  • STDIO and Streamable HTTP transports

Mailchimp-specific:

  • Auto-derives the API base URL from the -dc suffix on the API key
  • Safe-by-default send workflows — re-entrant confirmation, pending-status imports, no permanent deletes from agent surface
  • Workflow tools parallelize related sub-requests under a configurable concurrency limit
  • Domain normalization shapes sparse upstream payloads into compact, LLM-friendly output without fabricating values

Getting started

Add the following to your MCP client configuration file. See docs/api-key.md for how to generate a Mailchimp API key.

{
  "mcpServers": {
    "mailchimp-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/mailchimp-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info",
        "MAILCHIMP_API_KEY": "your-key-with-dc-suffix-e.g.-us22"
      }
    }
  }
}

Or with npx (no Bun required):

{
  "mcpServers": {
    "mailchimp-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/mailchimp-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info",
        "MAILCHIMP_API_KEY": "your-key-with-dc-suffix-e.g.-us22"
      }
    }
  }
}

Or with Docker:

{
  "mcpServers": {
    "mailchimp-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "MCP_TRANSPORT_TYPE=stdio",
        "-e", "MAILCHIMP_API_KEY=your-key-with-dc-suffix-e.g.-us22",
        "ghcr.io/cyanheads/mailchimp-mcp-server:latest"
      ]
    }
  }
}

For Streamable HTTP, set the transport and start the server:

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 MAILCHIMP_API_KEY=... bun run start:http
# Server listens at http://localhost:3010/mcp

Prerequisites

  • Bun v1.4.0 or higher (or Node.js v24+).
  • A Mailchimp Marketing API key — the key's -dc suffix (e.g. -us22) identifies your data center and is parsed at startup.

Installation

  1. Clone the repository:
git clone https://github.com/cyanheads/mailchimp-mcp-server.git
  1. Navigate into the directory:
cd mailchimp-mcp-server
  1. Install dependencies:
bun install
  1. Configure environment:
cp .env.example .env
# edit .env and set MAILCHIMP_API_KEY

Configuration

VariableDescriptionDefault
MAILCHIMP_API_KEYRequired. Mailchimp Marketing API key including -dc suffix (e.g. abc…-us22).—
MAILCHIMP_BASE_URLOverride API base URL (for mock servers or tests).https://{dc}.api.mailchimp.com/3.0
MAILCHIMP_TIMEOUT_MSPer-request timeout in milliseconds.60000
MAILCHIMP_MAX_RETRIESMax retry attempts for transient upstream failures (0-10).3
MAILCHIMP_CONCURRENCY_LIMITMax in-flight upstream requests per workflow tool (1-10).4
MAILCHIMP_ASSETS_DIRAbsolute path to a local assets directory. When set (Node-only), enables the mailchimp_assets tool and auto-uploads @assets/<path> references in campaign HTML to Mailchimp File Manager. Cache at <dir>/.mailchimp-cache.json.unset
MAILCHIMP_TEMPLATES_DIRAbsolute path to a local templates directory. When set (Node-only), enables the mailchimp_local_templates tool and support for content.localTemplate on campaign tools. Templates are .eta files with optional <name>.meta.yaml sidecars.unset
MCP_TRANSPORT_TYPETransport: stdio or http.stdio
MCP_HTTP_HOSTHTTP server hostname.127.0.0.1
MCP_HTTP_PORTHTTP server port.3010
MCP_HTTP_ENDPOINT_PATHMCP endpoint path./mcp
MCP_AUTH_MODEAuth mode: none, jwt, or oauth.none
MCP_LOG_LEVELLog level (RFC 5424).info
LOGS_DIRDirectory for log files (Node.js only).<project-root>/logs
OTEL_ENABLEDEnable OpenTelemetry.false

See .env.example for the full list of optional overrides.

Local assets (optional)

Set MAILCHIMP_ASSETS_DIR to enable a local-image workflow on top of Mailchimp's File Manager. Drop image files into the directory, reference them in HTML as @assets/<relative-path>, and the server uploads + rewrites at send time.

export MAILCHIMP_ASSETS_DIR=/Users/me/Pictures/email-assets

Then in a campaign:

<img src="@assets/hero.png" alt="Hero">
<a href="@assets/whitepaper.pdf">Download</a>

When mailchimp_send_campaign (or mailchimp_campaigns set-content / mailchimp_replicate_campaign contentOverride) sees these references, it:

  1. Hashes each referenced file (SHA-256).
  2. Uploads cache misses to Mailchimp File Manager via the mailchimp_files tool surface.
  3. Caches sha256 → file_id + URL at <assetsDir>/.mailchimp-cache.json (atomic writes; safe to delete to force re-upload).
  4. Rewrites every @assets/<path> to the public CDN URL before passing content upstream.

The mailchimp_assets tool exposes list, info, sync (pre-warm), and clear-cache for direct inspection — most workflows don't need it.

Caveats:

  • Mailchimp caps images at 1 MB and other files at 10 MB. Oversize files fail before upload with an actionable error.
  • Allowed extensions: see the mailchimp_files tool description. WebP and AVIF are NOT in the allowlist — convert to PNG/JPG.
  • Path traversal is rejected (../ and absolute paths throw Forbidden).
  • The mailchimp_assets tool is Node-only; on Cloudflare Workers it isn't registered.

Local templates (optional)

Set MAILCHIMP_TEMPLATES_DIR to enable a local-template authoring workflow on top of Eta (v4 — fast, ESM-native, supports partials/conditionals/loops). This is the canonical write path for templates on free-tier Mailchimp accounts, where the upstream /templates API is read-only.

export MAILCHIMP_TEMPLATES_DIR=/Users/me/email-templates
email-templates/
  welcome.eta              # body + optional YAML frontmatter
  newsletter.eta
  partials/
    header.eta
    footer.eta

Template (welcome.eta) — YAML frontmatter on top, Eta body below:

---
subject: "Welcome to {{brand}}"
previewText: "Onboarding starts here"
vars:
  - firstName
  - brand
---
<%~ include('partials/header', it) %>
<h1>Hello <%= it.firstName %></h1>
<p>Welcome to <%= it.brand %>.</p>
<img src="@assets/hero.png" alt="Hero">

Frontmatter is optional — a body with no --- block is treated as a meta-less template. All meta fields are optional too. The vars: list is informational only (declared variables aren't schema-enforced).

Sidecar fallback (legacy): prior to v0.3.1, meta lived in a separate <name>.meta.yaml file next to the body. That form still works for backward compatibility — if a .eta has no frontmatter, the loader falls back to reading the sidecar. Frontmatter takes precedence when both exist.

Reference from any campaign tool:

{
  "audienceId": "abc123",
  "subject": "Welcome to Acme",
  "fromName": "Casey",
  "replyTo": "casey@acme.com",
  "content": {
    "localTemplate": "welcome",
    "localTemplateVars": { "firstName": "Sam", "brand": "Acme" }
  },
  "mode": "draft"
}

The render pipeline:

  1. Eta renders welcome.eta with it = { firstName: 'Sam', brand: 'Acme' }.
  2. If L1 is configured, @assets/hero.png is uploaded to Mailchimp File Manager and rewritten to a CDN URL.
  3. Final HTML is set on the campaign via Mailchimp's set-content.

The mailchimp_local_templates tool exposes list, get, render-preview (returns HTML without sending), and seed-from-mailchimp (reads a Mailchimp base/user template by ID and writes it to disk as a starting point — useful on free where you can read but not write upstream).

Example templates in this repo

The templates/ directory holds working examples — point MAILCHIMP_TEMPLATES_DIR at it directly to try them, or copy them into your own dir as a starting point:

TemplateWhat it shows
welcome.etaMinimal body — frontmatter declaring subject / previewText / vars, <%= it.firstName %> interpolation, <% if %> conditional CTA block
redden-gardens-april-2026.etaFull inline-styled HTML newsletter. Demonstrates the recommended split: Mailchimp merge tags (*|FNAME|*) for per-recipient personalization on real list sends, Eta vars (volume / issue / monthYear / URLs) for list-wide constants substituted at template-render time

Caveats:

  • localTemplate is mutually exclusive with html and templateId on the same content block.
  • Var validation isn't enforced by the schema — missing/extra vars surface as Eta render errors at send time.
  • Path traversal is rejected.
  • Node-only; not available on Workers.

Running the server

Local development

  • Watch mode (transport via MCP_TRANSPORT_TYPE):

    bun run dev                                     # stdio (default)
    MCP_TRANSPORT_TYPE=http bun run dev             # http
    
  • Build and run:

    bun run rebuild
    bun run start:stdio
    # or
    bun run start:http
    
  • Run checks and tests:

    bun run devcheck   # Lint, format, typecheck, security
    bun run test       # Vitest test suite
    bun run lint:mcp   # Validate MCP definitions against spec
    

Docker

docker build -t mailchimp-mcp-server .
docker run --rm -e MAILCHIMP_API_KEY=your-key-us22 -p 3010:3010 mailchimp-mcp-server

The Dockerfile defaults to HTTP transport, stateless session mode, and logs to /var/log/mailchimp-mcp-server. OpenTelemetry peer dependencies are installed by default — build with --build-arg OTEL_ENABLED=false to omit them.

Project structure

DirectoryPurpose
src/index.tscreateApp() entry point — registers tools/resources/prompts and inits services.
src/configServer-specific environment variable parsing and validation with Zod.
src/mcp-server/toolsTool definitions (*.tool.ts). Eighteen always-on tools plus two conditional local-workspace tools.
src/mcp-server/resourcesResource definitions (*.resource.ts). Four snapshot resources.
src/mcp-server/promptsPrompt definitions (*.prompt.ts). Newsletter starter prompt.
src/services/mailchimpMailchimp client wrapper — HTTP plumbing, retries, normalization, typed surface.
tests/Vitest coverage for configuration, services, tool workflows, output formatting, framework contracts, and regressions.

Development guide

See CLAUDE.md for development guidelines and architectural rules. The short version:

  • Handlers throw, framework catches — no try/catch in tool logic
  • Use ctx.log for request-scoped logging
  • Register new tools and resources via the barrels in src/mcp-server/*/definitions/index.ts
  • Wrap external API calls: validate raw → normalize to domain type → return output schema; never fabricate missing fields

Contributing

Issues and pull requests are welcome. Run checks and tests before submitting:

bun run devcheck
bun run test

License

This project is licensed under the Apache 2.0 License. See the LICENSE file for details.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →

Configuration

MAILCHIMP_API_KEY*

Mailchimp Marketing API key, including the '-dc' data-center suffix (e.g. 'abc...-us22'). Generate at Mailchimp → Account → Extras → API keys.

MAILCHIMP_BASE_URL

Override the API base URL (for mock servers or testing). Defaults to 'https://{dc}.api.mailchimp.com/3.0' derived from the API key suffix.

MAILCHIMP_TIMEOUT_MSdefault: 60000

Per-request timeout in milliseconds.

MAILCHIMP_MAX_RETRIESdefault: 3

Max retry attempts for transient upstream failures (0-10).

MAILCHIMP_CONCURRENCY_LIMITdefault: 4

Max in-flight upstream requests per workflow tool (1-10).

MAILCHIMP_ASSETS_DIR

Absolute path to a local assets directory. When set (Node-only — Workers ignored), enables the `mailchimp_assets` tool and auto-uploads `@assets/<path>` references in campaign HTML to Mailchimp File Manager at send time. Cache at <dir>/.mailchimp-cache.json.

MAILCHIMP_TEMPLATES_DIR

Absolute path to a local templates directory. When set (Node-only), enables the `mailchimp_local_templates` tool and support for `content.localTemplate` on campaign tools. Templates are `.eta` files with optional `<name>.meta.yaml` sidecars. Canonical write path on free-tier Mail

MCP_LOG_LEVELdefault: info

Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

MCP_HTTP_HOSTdefault: 127.0.0.1

The hostname for the HTTP server.

MCP_HTTP_PORTdefault: 3010

The port to run the HTTP server on.

MCP_HTTP_ENDPOINT_PATHdefault: /mcp

The endpoint path for the MCP server.

MCP_AUTH_MODEdefault: none

Authentication mode to use: 'none', 'jwt', or 'oauth'.

Registryactive
Package@cyanheads/mailchimp-mcp-server
TransportSTDIO, HTTP
AuthRequired
UpdatedMay 23, 2026
View on GitHub

More from cyanheads

  • Shift Mcp Server1
  • Usda Mcp Server1
  • Anime Mcp Server
  • Oecd Mcp Server
  • Uspto Mcp Server
  • nist-nvd-mcp-server
  • open-meteo-mcp-server
  • openfda-mcp-server
  • wikipedia-mcp-server
  • Mcp Ts Template145
  • census-mcp-server
  • crossref-mcp-server
  • eur-lex-mcp-server
  • faostat-mcp-server
  • faostat-mcp-server
  • federal-regulations-mcp-server
  • fema-mcp-server
  • libofcongress-mcp-server
  • openfoodfacts-mcp-server
  • orcid-mcp-server
  • reference-data-mcp-server
  • usaspending-mcp-server
  • exchange-rates-mcp-server
  • national-parks-mcp-server