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.
Public tool metadata for what this MCP can expose to an agent.
MAILCHIMP_ADD_AUTOMATIONCreate a new classic automation in your Mailchimp account.5 paramsCreate a new classic automation in your Mailchimp account.
settings__reply__tostringrecipients__list__idstringsettings__from__namestringrecipients__store__idstringtrigger__settings__workflow__typestringMAILCHIMP_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 paramsConfigure a webhook that will fire whenever any batch request completes processing. You may only have a maximum of 20 batch webhooks.
urlstringenabledbooleanMAILCHIMP_ADD_CAMPAIGNCreate a new Mailchimp campaign.54 paramsCreate a new Mailchimp campaign.
typestringregular · plaintext · absplit · rss · variatecontent_typestringtemplate · multichannelsettings__titlestringtracking__opensbooleansettings__to__namestringtracking__ecomm360booleansettings__reply__tostringsocial__card__titlestringtracking__clicktalestringrecipients__list__idstringrss__opts__feed__urlstringrss__opts__frequencystringdaily · weekly · monthlysettings__folder__idstringsettings__from__namestringsettings__auto__tweetbooleansettings__inline__cssbooleansettings__authenticatebooleansettings__auto__footerbooleansettings__fb__commentsbooleansettings__template__idintegertracking__html__clicksbooleantracking__text__clicksbooleansettings__preview__textstringsettings__subject__linestringsettings__auto__fb__postarraysocial__card__image__urlstringtracking__capsule__notesbooleantracking__goal__trackingbooleanrss__opts__schedule__hourintegersocial__card__descriptionstringsettings__use__conversationbooleantracking__google__analyticsstringtracking__salesforce__notesbooleanvariate__settings__test__sizeintegervariate__settings__wait__timeintegerrss__opts__constrain__rss__imgbooleantracking__salesforce__campaignbooleanvariate__settings__from__namesarrayvariate__settings__send__timesarrayrecipients__segment__opts__matchstringany · allvariate__settings__subject__linesarrayvariate__settings__winner__criteriastringopens · clicks · manual · total_revenuerecipients__segment__opts__conditionsarrayrss__opts__schedule__weekly__send__daystringsunday · monday · tuesday · wednesday · thursday · fridayvariate__settings__reply__to__addressesarrayrss__opts__schedule__daily__send__fridaybooleanrss__opts__schedule__daily__send__mondaybooleanrss__opts__schedule__daily__send__sundaybooleanrss__opts__schedule__monthly__send__dateintegerrss__opts__schedule__daily__send__tuesdaybooleanrss__opts__schedule__daily__send__saturdaybooleanrss__opts__schedule__daily__send__thursdaybooleanrss__opts__schedule__daily__send__wednesdaybooleanrecipients__segment__opts__saved__segment__idintegerMAILCHIMP_ADD_CAMPAIGN_FEEDBACKAdd feedback on a specific campaign.4 paramsAdd feedback on a specific campaign.
messagestringblock_idintegercampaign_idstringis_completebooleanMAILCHIMP_ADD_CAMPAIGN_FOLDERCreate a new campaign folder.1 paramsCreate a new campaign folder.
namestringMAILCHIMP_ADD_CARTAdd a new cart to a store.22 paramsAdd a new cart to a store.
idstringlinesarraystore_idstringtax_totalintegercampaign_idstringorder_totalintegercheckout_urlstringcustomer__idstringcurrency_codestringcustomer__companystringcustomer__last__namestringcustomer__first__namestringcustomer__address__citystringcustomer__email__addressstringcustomer__opt__in__statusbooleancustomer__address__countrystringcustomer__address__address1stringcustomer__address__address2stringcustomer__address__provincestringcustomer__address__postal__codestringcustomer__address__country__codestringcustomer__address__province__codestringMAILCHIMP_ADD_CART_LINE_ITEMAdd a new line item to an existing cart.7 paramsAdd a new line item to an existing cart.
idstringpriceintegercart_idstringquantityintegerstore_idstringproduct_idstringproduct_variant_idstringMAILCHIMP_ADD_CONNECTED_SITECreate a new Mailchimp connected site.2 paramsCreate a new Mailchimp connected site.
domainstringforeign_idstringMAILCHIMP_ADD_CUSTOMERAdd a new customer to a store.15 paramsAdd a new customer to a store.
idstringcompanystringstore_idstringlast_namestringfirst_namestringaddress__citystringemail_addressstringopt_in_statusbooleanaddress__countrystringaddress__address1stringaddress__address2stringaddress__provincestringaddress__postal__codestringaddress__country__codestringaddress__province__codestringMAILCHIMP_ADD_DOMAIN_TO_ACCOUNTAdd a domain to the account.1 paramsAdd a domain to the account.
verification_emailstringMAILCHIMP_ADD_EVENTAdd an event for a list member.6 paramsAdd an event for a list member.
namestringlist_idstringis_syncingbooleanpropertiesobjectoccurred_atstringsubscriber_hashstringMAILCHIMP_ADD_EXPORTCreate a new account export in your Mailchimp account.2 paramsCreate a new account export in your Mailchimp account.
include_stagesarraysince_timestampstringMAILCHIMP_ADD_FILEUpload a new image or file to the File Manager.3 paramsUpload a new image or file to the File Manager.
namestringfile_datastringfolder_idintegerMAILCHIMP_ADD_FOLDERCreate a new folder in the File Manager.1 paramsCreate a new folder in the File Manager.
namestringMAILCHIMP_ADD_INTEREST_CATEGORYCreate a new interest category.4 paramsCreate a new interest category.
typestringcheckboxes · dropdown · radio · hiddentitlestringlist_idstringdisplay_orderintegerMAILCHIMP_ADD_INTEREST_IN_CATEGORYCreate a new interest or 'group name' for a specific category.4 paramsCreate a new interest or 'group name' for a specific category.
namestringlist_idstringdisplay_orderintegerinterest_category_idstringMAILCHIMP_ADD_LANDING_PAGECreate a new Mailchimp landing page.10 paramsCreate a new Mailchimp landing page.
namestringtypestringsignup · producttitlestringlist_idstringstore_idstringdescriptionstringtemplate_idintegeruse_default_listbooleantracking__track__with__mailchimpbooleantracking__enable__restricted__data__processingbooleanMAILCHIMP_ADD_LISTCreate a new list in your Mailchimp account.20 paramsCreate a new list in your Mailchimp account.
namestringcontact__zipstringdouble_optinbooleancontact__citystringcontact__phonestringcontact__statestringuse_archive_barbooleancontact__companystringcontact__countrystringcontact__address1stringcontact__address2stringemail_type_optionbooleannotify_on_subscribestringpermission_reminderstringmarketing_permissionsbooleannotify_on_unsubscribestringcampaign__defaults__subjectstringcampaign__defaults__languagestringcampaign__defaults__from__namestringcampaign__defaults__from__emailstringMAILCHIMP_ADD_MEMBER_NOTEAdd a new note for a specific subscriber.3 paramsAdd a new note for a specific subscriber.
notestringlist_idstringsubscriber_hashstringMAILCHIMP_ADD_MEMBER_TO_LISTAdd a new member to the list.17 paramsAdd a new member to the list.
vipbooleantagsarrayip_optstringstatusstringsubscribed · unsubscribed · cleaned · pending · transactionallist_idstringlanguagestringinterestsobjectip_signupstringemail_typestringmerge_fieldsobjectemail_addressstringtimestamp_optstringtimestamp_signupstringlocation__latitudeintegerlocation__longitudeintegermarketing_permissionsarrayskip_merge_validationbooleanMAILCHIMP_ADD_MEMBER_TO_SEGMENTAdd a member to a static segment.3 paramsAdd a member to a static segment.
list_idstringsegment_idstringemail_addressstringMAILCHIMP_ADD_MERGE_FIELDAdd a new merge field for a specific audience.14 paramsAdd a new merge field for a specific audience.
tagstringnamestringtypestringtext · number · address · phone · date · urlpublicbooleanlist_idstringrequiredbooleanhelp_textstringdefault_valuestringdisplay_orderintegeroptions__sizeintegeroptions__choicesarrayoptions__date__formatstringoptions__phone__formatstringoptions__default__countryintegerMAILCHIMP_ADD_ORDERAdd a new order to a store.62 paramsAdd a new order to a store.
idstringlinesarraypromosarraystore_idstringorder_urlstringtax_totalintegercampaign_idstringorder_totalintegercustomer__idstringlanding_sitestringoutreach__idstringtracking_urlstringcurrency_codestringtracking_codestringprecdiscount_totalintegershipping_totalintegertracking_numberstringfinancial_statusstringtracking_carrierstringcustomer__companystringfulfillment_statusstringupdated_at_foreignstringcancelled_at_foreignstringcustomer__last__namestringprocessed_at_foreignstringcustomer__first__namestringbilling__address__citystringbilling__address__namestringbilling__address__phonestringcustomer__address__citystringshipping__address__citystringshipping__address__namestringcustomer__email__addressstringshipping__address__phonestringbilling__address__companystringbilling__address__countrystringcustomer__opt__in__statusbooleanbilling__address__address1stringbilling__address__address2stringbilling__address__latitudeintegerbilling__address__provincestringcustomer__address__countrystringshipping__address__companystringshipping__address__countrystringbilling__address__longitudeintegercustomer__address__address1stringcustomer__address__address2stringcustomer__address__provincestringshipping__address__address1stringshipping__address__address2stringshipping__address__latitudeintegershipping__address__provincestringshipping__address__longitudeintegerbilling__address__postal__codestringbilling__address__country__codestringcustomer__address__postal__codestringshipping__address__postal__codestringbilling__address__province__codestringcustomer__address__country__codestringshipping__address__country__codestringcustomer__address__province__codestringshipping__address__province__codestringMAILCHIMP_ADD_ORDER_LINE_ITEMAdd a new line item to an existing order.8 paramsAdd a new line item to an existing order.
idstringpriceintegerdiscountintegerorder_idstringquantityintegerstore_idstringproduct_idstringproduct_variant_idstringMAILCHIMP_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 paramsAdd 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.
tagsarraylist_idstringis_syncingbooleansubscriber_hashstringMAILCHIMP_ADD_OR_UPDATE_CUSTOMERAdd or update a customer.16 paramsAdd or update a customer.
idstringcompanystringstore_idstringlast_namestringfirst_namestringcustomer_idstringaddress__citystringemail_addressstringopt_in_statusbooleanaddress__countrystringaddress__address1stringaddress__address2stringaddress__provincestringaddress__postal__codestringaddress__country__codestringaddress__province__codestringMAILCHIMP_ADD_OR_UPDATE_LIST_MEMBERAdd or update a list member.18 paramsAdd or update a list member.
vipbooleanip_optstringstatusstringsubscribed · unsubscribed · cleaned · pending · transactionallist_idstringlanguagestringinterestsobjectip_signupstringemail_typestringmerge_fieldsobjectemail_addressstringstatus_if_newstringsubscribed · unsubscribed · cleaned · pending · transactionaltimestamp_optstringsubscriber_hashstringtimestamp_signupstringlocation__latitudeintegerlocation__longitudeintegermarketing_permissionsarrayskip_merge_validationbooleanMAILCHIMP_ADD_OR_UPDATE_PRODUCT_VARIANTAdd or update a product variant.12 paramsAdd or update a product variant.
idstringskustringurlstringpriceintegertitlestringstore_idstringimage_urlstringbackordersstringproduct_idstringvariant_idstringvisibilitystringinventory_quantityintegerMAILCHIMP_ADD_PRODUCTAdd a new product to a store.12 paramsAdd a new product to a store.
idstringurlstringtypestringtitlestringhandlestringimagesarrayvendorstringstore_idstringvariantsarrayimage_urlstringdescriptionstringpublished_at_foreignstringMAILCHIMP_ADD_PRODUCT_IMAGEAdd a new image to the product.5 paramsAdd a new image to the product.
idstringurlstringstore_idstringproduct_idstringvariant_idsarrayMAILCHIMP_ADD_PRODUCT_VARIANTAdd a new variant to the product.11 paramsAdd a new variant to the product.
idstringskustringurlstringpriceintegertitlestringstore_idstringimage_urlstringbackordersstringproduct_idstringvisibilitystringinventory_quantityintegerMAILCHIMP_ADD_PROMO_CODEAdd a new promo code to a store.9 paramsAdd a new promo code to a store.
idstringcodestringenabledbooleanstore_idstringusage_countintegerpromo_rule_idstringredemption_urlstringcreated_at_foreignstringupdated_at_foreignstringMAILCHIMP_ADD_PROMO_RULEAdd a new promo rule to a store.12 paramsAdd a new promo rule to a store.
idstringtypestringfixed · percentagetitlestringamountintegertargetstringper_item · total · shippingenabledbooleanends_atstringstore_idstringstarts_atstringdescriptionstringcreated_at_foreignstringupdated_at_foreignstringMAILCHIMP_ADD_SEGMENTCreate a new segment in a specific list.5 paramsCreate a new segment in a specific list.
namestringlist_idstringoptions__matchstringany · allstatic_segmentarrayoptions__conditionsarrayMAILCHIMP_ADD_STOREAdd a new store to your Mailchimp account.22 paramsAdd a new store to your Mailchimp account.
idstringnamestringphonestringdomainstringlist_idstringplatformstringtimezonestringis_syncingbooleanmoney_formatstringaddress__citystringcurrency_codestringemail_addressstringprimary_localestringaddress__countrystringaddress__address1stringaddress__address2stringaddress__latitudeintegeraddress__provincestringaddress__longitudeintegeraddress__postal__codestringaddress__country__codestringaddress__province__codestringMAILCHIMP_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 paramsManually 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.
workflow_idstringemail_addressstringworkflow_email_idstringMAILCHIMP_ADD_TEMPLATECreate a new template for the account. Only Classic templates are supported.3 paramsCreate a new template for the account. Only Classic templates are supported.
htmlstringnamestringfolder_idstringMAILCHIMP_ADD_TEMPLATE_FOLDERCreate a new template folder.1 paramsCreate a new template folder.
namestringMAILCHIMP_ADD_WEBHOOKCreate a new webhook for a specific list.11 paramsCreate a new webhook for a specific list.
urlstringlist_idstringsources__apibooleansources__userbooleansources__adminbooleanevents__cleanedbooleanevents__profilebooleanevents__upemailbooleanevents__campaignbooleanevents__subscribebooleanevents__unsubscribebooleanMAILCHIMP_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 paramsArchiving 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.
workflow_idstringMAILCHIMP_ARCHIVE_LIST_MEMBERArchive a list member. To permanently delete, use the delete-permanent action.2 paramsArchive a list member. To permanently delete, use the delete-permanent action.
list_idstringsubscriber_hashstringMAILCHIMP_BATCH_ADD_OR_REMOVE_MEMBERSBatch add/remove list members to static segment4 paramsBatch add/remove list members to static segment
list_idstringsegment_idstringmembers_to_addarraymembers_to_removearrayMAILCHIMP_BATCH_SUBSCRIBE_OR_UNSUBSCRIBEBatch subscribe or unsubscribe list members.6 paramsBatch subscribe or unsubscribe list members.
list_idstringmembersarraysync_tagsbooleanupdate_existingbooleanskip_duplicate_checkbooleanskip_merge_validationbooleanMAILCHIMP_CAMPAIGN_ABUSE_REPORT_DETAILSGet information about a specific abuse report for a campaign.4 paramsGet information about a specific abuse report for a campaign.
fieldsarrayreport_idstringcampaign_idstringexclude_fieldsarrayMAILCHIMP_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 paramsGet feedback based on a campaign's statistics. Advice feedback is based on campaign stats like opens, clicks, unsubscribes, bounces, and more.
fieldsarraycampaign_idstringexclude_fieldsarrayMAILCHIMP_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 paramsCancel a Regular or Plain-Text Campaign after you send, before all of your recipients receive it. This feature is included with Mailchimp Pro.
campaign_idstringMAILCHIMP_CREATE_A_SURVEY_CAMPAIGNUtilize the List ID and Survey ID to generate a Campaign that links to your survey.2 paramsUtilize the List ID and Survey ID to generate a Campaign that links to your survey.
list_idstringsurvey_idstringMAILCHIMP_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 paramsCreate 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.
step_idintegerjourney_idintegeremail_addressstringMAILCHIMP_CUSTOMIZE_SIGNUP_FORMCustomize a list's default signup form.14 paramsCustomize a list's default signup form.
stylesarraylist_idstringcontentsarrayheader__textstringheader__image__altstringheader__image__urlstringheader__image__linkstringheader__image__alignstringnone · left · center · rightheader__image__widthstringheader__image__heightstringheader__image__targetstring_blank · nullheader__image__border__colorstringheader__image__border__stylestringnone · solid · dotted · dashed · double · grooveheader__image__border__widthstringMAILCHIMP_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 paramsStops 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.
batch_idstringMAILCHIMP_DELETE_BATCH_WEBHOOKRemove a batch webhook. Webhooks will no longer be sent to the given URL.1 paramsRemove a batch webhook. Webhooks will no longer be sent to the given URL.
batch_webhook_idstringMAILCHIMP_DELETE_CAMPAIGNRemove a campaign from your Mailchimp account.1 paramsRemove a campaign from your Mailchimp account.
campaign_idstringMAILCHIMP_DELETE_CAMPAIGN_FEEDBACK_MESSAGERemove a specific feedback message for a campaign.2 paramsRemove a specific feedback message for a campaign.
campaign_idstringfeedback_idstringMAILCHIMP_DELETE_CAMPAIGN_FOLDERDelete a specific campaign folder, and mark all the campaigns in the folder as 'unfiled'.1 paramsDelete a specific campaign folder, and mark all the campaigns in the folder as 'unfiled'.
folder_idstringMAILCHIMP_DELETE_CARTDelete a cart.2 paramsDelete a cart.
cart_idstringstore_idstringMAILCHIMP_DELETE_CART_LINE_ITEMDelete a specific cart line item.3 paramsDelete a specific cart line item.
cart_idstringline_idstringstore_idstringMAILCHIMP_DELETE_CONNECTED_SITERemove a connected site from your Mailchimp account.1 paramsRemove a connected site from your Mailchimp account.
connected_site_idstringMAILCHIMP_DELETE_CUSTOMERDelete a customer from a store.2 paramsDelete a customer from a store.
store_idstringcustomer_idstringMAILCHIMP_DELETE_DOMAINDelete a verified domain from the account.1 paramsDelete a verified domain from the account.
domain_namestringMAILCHIMP_DELETE_FILERemove a specific file from the File Manager.1 paramsRemove a specific file from the File Manager.
file_idstringMAILCHIMP_DELETE_FOLDERDelete a specific folder in the File Manager.1 paramsDelete a specific folder in the File Manager.
folder_idstringMAILCHIMP_DELETE_INTEREST_CATEGORYDelete a specific interest category.2 paramsDelete a specific interest category.
list_idstringinterest_category_idstringMAILCHIMP_DELETE_INTEREST_IN_CATEGORYDelete interests or group names in a specific category.3 paramsDelete interests or group names in a specific category.
list_idstringinterest_idstringinterest_category_idstringMAILCHIMP_DELETE_LANDING_PAGEDelete a landing page.1 paramsDelete a landing page.
page_idstringMAILCHIMP_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 paramsDelete 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.
list_idstringMAILCHIMP_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 paramsDelete 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.
list_idstringsubscriber_hashstringMAILCHIMP_DELETE_MERGE_FIELDDelete a specific merge field.2 paramsDelete a specific merge field.
list_idstringmerge_idstringMAILCHIMP_DELETE_NOTEDelete a specific note for a specific list member.3 paramsDelete a specific note for a specific list member.
list_idstringnote_idstringsubscriber_hashstringMAILCHIMP_DELETE_ORDERDelete an order.2 paramsDelete an order.
order_idstringstore_idstringMAILCHIMP_DELETE_ORDER_LINE_ITEMDelete a specific order line item.3 paramsDelete a specific order line item.
line_idstringorder_idstringstore_idstringMAILCHIMP_DELETE_PRODUCTDelete a product.2 paramsDelete a product.
store_idstringproduct_idstringMAILCHIMP_DELETE_PRODUCT_IMAGEDelete a product image.3 paramsDelete a product image.
image_idstringstore_idstringproduct_idstringMAILCHIMP_DELETE_PRODUCT_VARIANTDelete a product variant.3 paramsDelete a product variant.
store_idstringproduct_idstringvariant_idstringMAILCHIMP_DELETE_PROMO_CODEDelete a promo code from a store.3 paramsDelete a promo code from a store.
store_idstringpromo_code_idstringpromo_rule_idstringMAILCHIMP_DELETE_PROMO_RULEDelete a promo rule from a store.2 paramsDelete a promo rule from a store.
store_idstringpromo_rule_idstringMAILCHIMP_DELETE_SEGMENTDelete a specific segment in a list.2 paramsDelete a specific segment in a list.
list_idstringsegment_idstringMAILCHIMP_DELETE_STOREDelete a store. Deleting a store will also delete any associated subresources, including Customers, Orders, Products, and Carts.1 paramsDelete a store. Deleting a store will also delete any associated subresources, including Customers, Orders, Products, and Carts.
store_idstringMAILCHIMP_DELETE_TEMPLATEDelete a specific template.1 paramsDelete a specific template.
template_idstringMAILCHIMP_DELETE_TEMPLATE_FOLDERDelete a specific template folder, and mark all the templates in the folder as 'unfiled'.1 paramsDelete a specific template folder, and mark all the templates in the folder as 'unfiled'.
folder_idstringMAILCHIMP_DELETE_WEBHOOKDelete a specific webhook in a list.2 paramsDelete a specific webhook in a list.
list_idstringwebhook_idstringDraft, 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.
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 Name | Description |
|---|---|
mailchimp_account | Account profile, plan, data center, total subscribers, and the Chimp Chatter activity feed. |
mailchimp_audiences | Manage audiences (lists) — read, create/update, per-audience analytics, signup-form config. No delete. |
mailchimp_audience_overview | One-call audience health digest: info, stats, growth history, top email clients, merge-field schema. |
mailchimp_subscribers | Subscriber CRUD + tags/notes/activity. archive is the strongest delete available. |
mailchimp_upsert_subscriber | Add or update a subscriber idempotently with status, merge fields, tags, and optional note. |
mailchimp_find_subscriber | Locate a subscriber by email in one audience or across the account. |
mailchimp_import_subscribers | Batch add/update subscribers (capped at 500/call). Status defaults to pending (double-opt-in). |
mailchimp_segments | CRUD for audience segments (saved, static, fuzzy) plus member listing and batch add/remove. |
mailchimp_merge_fields | Read + create/update custom subscriber attributes. No delete — drops data across all subscribers. |
mailchimp_campaigns | Campaign record management: list/get/create/update, replicate, content, checklist, RSS/resend controls. |
mailchimp_send_campaign | Compose and send (or schedule/test) a campaign in one call. Elicits human confirmation on send/schedule. |
mailchimp_replicate_campaign | Duplicate a campaign with optional overrides, then draft/test/send/schedule. Same elicit + cleanup semantics. |
mailchimp_reports | Campaign reports — generic slicer across ten dimensions (clicks, opens, locations, etc.). |
mailchimp_campaign_report | Post-send analytics digest — headline metrics + top 5 slices in one response. |
mailchimp_templates | Email template read/write — reads (list/get) work on free for base/user types; writes (create/update/delete) and gallery require a paid plan. |
mailchimp_files | File 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_search | Global 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_playbook | Returns a structured procedural playbook merged with live account state. Advice-only, no writes. |
mailchimp_send_campaignCompose and send (or schedule/test) a campaign in one call.
ctx.elicit when mode: 'send' | 'schedule' and the client supports elicitationcleanupOnError: true (default)html, plaintext, and templateId + mergeData content formsmailchimp_replicate_campaignDuplicate an existing campaign with optional overrides, then send/schedule/test or leave as draft.
mailchimp_send_campaignmailchimp_upsert_subscriberAdd or update a subscriber in one idempotent call.
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/members/{hash} for create path, PATCH for update to skip re-validating pre-existing merge fieldsmailchimp_import_subscribersBatch add (and optionally update) subscribers in one call.
pending (double-opt-in) to prevent accidental mass-sendsmailchimp_campaign_reportAggregated post-send analytics for a campaign.
mailchimp_reports with operation: 'slice' for a single dimension in detailmailchimp_audience_overviewSingle-call audience health digest — answers "what does this audience look like?" in one request.
mailchimp_playbookReturns a structured procedural playbook merged with live account state. Advice-only — the agent executes subsequent steps with other tools.
send, post-send-review, deliverability, list-hygiene, onboarding, subscriber-triage, design-campaignnextToolSuggestions pre-fills arguments for the next likely tool call| Type | Name | Description |
|---|---|---|
| Resource | mailchimp://account | Account info snapshot — profile, plan, data center, total subscribers. |
| Resource | mailchimp://audiences/{audienceId} | Audience snapshot — name, contact, stats, double-opt-in status. |
| Resource | mailchimp://campaigns/{campaignId} | Campaign snapshot — status, settings, recipients summary. |
| Resource | mailchimp://campaigns/{campaignId}/report | Post-send campaign report headline metrics. |
| Prompt | newsletter_from_source | User-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.
Built on @cyanheads/mcp-ts-core:
none, jwt, oauthMailchimp-specific:
-dc suffix on the API keyAdd 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
-dc suffix (e.g. -us22) identifies your data center and is parsed at startup.git clone https://github.com/cyanheads/mailchimp-mcp-server.git
cd mailchimp-mcp-server
bun install
cp .env.example .env
# edit .env and set MAILCHIMP_API_KEY
| Variable | Description | Default |
|---|---|---|
MAILCHIMP_API_KEY | Required. Mailchimp Marketing API key including -dc suffix (e.g. abc…-us22). | — |
MAILCHIMP_BASE_URL | Override API base URL (for mock servers or tests). | https://{dc}.api.mailchimp.com/3.0 |
MAILCHIMP_TIMEOUT_MS | Per-request timeout in milliseconds. | 60000 |
MAILCHIMP_MAX_RETRIES | Max retry attempts for transient upstream failures (0-10). | 3 |
MAILCHIMP_CONCURRENCY_LIMIT | Max in-flight upstream requests per workflow tool (1-10). | 4 |
MAILCHIMP_ASSETS_DIR | Absolute 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_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. | unset |
MCP_TRANSPORT_TYPE | Transport: stdio or http. | stdio |
MCP_HTTP_HOST | HTTP server hostname. | 127.0.0.1 |
MCP_HTTP_PORT | HTTP server port. | 3010 |
MCP_HTTP_ENDPOINT_PATH | MCP endpoint path. | /mcp |
MCP_AUTH_MODE | Auth mode: none, jwt, or oauth. | none |
MCP_LOG_LEVEL | Log level (RFC 5424). | info |
LOGS_DIR | Directory for log files (Node.js only). | <project-root>/logs |
OTEL_ENABLED | Enable OpenTelemetry. | false |
See .env.example for the full list of optional overrides.
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:
mailchimp_files tool surface.sha256 → file_id + URL at <assetsDir>/.mailchimp-cache.json (atomic writes; safe to delete to force re-upload).@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_files tool description. WebP and AVIF are NOT in the allowlist — convert to PNG/JPG.../ and absolute paths throw Forbidden).mailchimp_assets tool is Node-only; on Cloudflare Workers it isn't registered.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.yamlfile next to the body. That form still works for backward compatibility — if a.etahas 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:
welcome.eta with it = { firstName: 'Sam', brand: 'Acme' }.@assets/hero.png is uploaded to Mailchimp File Manager and rewritten to a CDN URL.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).
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:
| Template | What it shows |
|---|---|
welcome.eta | Minimal body — frontmatter declaring subject / previewText / vars, <%= it.firstName %> interpolation, <% if %> conditional CTA block |
redden-gardens-april-2026.eta | Full 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.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 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.
| Directory | Purpose |
|---|---|
src/index.ts | createApp() entry point — registers tools/resources/prompts and inits services. |
src/config | Server-specific environment variable parsing and validation with Zod. |
src/mcp-server/tools | Tool definitions (*.tool.ts). Seventeen Mailchimp tools. |
src/mcp-server/resources | Resource definitions (*.resource.ts). Four snapshot resources. |
src/mcp-server/prompts | Prompt definitions (*.prompt.ts). Newsletter starter prompt. |
src/services/mailchimp | Mailchimp client wrapper — HTTP plumbing, retries, normalization, typed surface. |
tests/ | Vitest tests mirroring src/. Currently only config/ is covered; other subdirs are scaffolded for expansion. |
See CLAUDE.md for development guidelines and architectural rules. The short version:
try/catch in tool logicctx.log for request-scoped loggingsrc/mcp-server/*/definitions/index.tsIssues and pull requests are welcome. Run checks and tests before submitting:
bun run devcheck
bun run test
This project is licensed under the Apache 2.0 License. See the LICENSE file for details.
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_URLOverride 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: 60000Per-request timeout in milliseconds.
MAILCHIMP_MAX_RETRIESdefault: 3Max retry attempts for transient upstream failures (0-10).
MAILCHIMP_CONCURRENCY_LIMITdefault: 4Max in-flight upstream requests per workflow tool (1-10).
MAILCHIMP_ASSETS_DIRAbsolute 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_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. Canonical write path on free-tier Mail
MCP_LOG_LEVELdefault: infoSets the minimum log level for output (e.g., 'debug', 'info', 'warn').
MCP_HTTP_HOSTdefault: 127.0.0.1The hostname for the HTTP server.
MCP_HTTP_PORTdefault: 3010The port to run the HTTP server on.
MCP_HTTP_ENDPOINT_PATHdefault: /mcpThe endpoint path for the MCP server.
MCP_AUTH_MODEdefault: noneAuthentication mode to use: 'none', 'jwt', or 'oauth'.