🚀 Don't want to self-host? Join the waitlist for our fully managed solution →
Zero setup. Zero maintenance. Just connect and automate.
📧 Mailchimp MCP Server
💡 What This Unlocks
This MCP server gives AI direct access to your entire Mailchimp marketing operation. Instead of clicking through campaigns and lists, you just tell it what you need.
🎯 Mailchimp-Native Power Moves
| Just say... | What happens |
|---|---|
| "Show me subscribers who opened the last campaign but didn't click" | Queries campaign reports, filters engaged users, returns contact list with engagement scores |
| "Create a welcome email campaign for new subscribers with 15% off code" | Builds campaign, designs template, adds coupon, schedules send |
| "Which audience segments have the highest open rates this month?" | Pulls analytics, compares segment performance, generates ranked report |
| "Add everyone from webinar-attendees.csv to the VIP list and tag them" | Imports contacts, assigns to audience, applies tags, updates preferences |
| "Draft a product launch email and schedule for Thursday 9am EST" | Creates campaign, generates content, sets timezone, schedules delivery |
🔗 The Real Power: Combining Tools
AI can chain multiple Mailchimp operations together:
- Smart Segmentation: "Find subscribers who joined in the last 30 days and have opened at least 2 emails" → Query audiences, filter by join date and engagement, create segment
- Campaign Optimization: "Compare subject lines from my last 5 campaigns and suggest improvements for tomorrow's send" → Pull campaign data, analyze open rates, generate recommendations
- List Health: "Show me contacts who haven't engaged in 90 days and create a re-engagement campaign" → Identify inactive users, build win-back sequence, schedule drip
📦 What's Inside
85 API tools covering the entire Mailchimp platform:
- Campaigns — Create, send, schedule, test, and analyze email campaigns
- Audiences — Manage lists, segments, merge fields, and tags
- Contacts — Add, update, delete, and search subscribers
- Templates — Design and manage email templates
- Automations — Set up drip campaigns and triggered emails
- Reports — Campaign analytics, engagement metrics, revenue tracking
All with proper error handling, automatic rate limiting, and TypeScript types.
🚀 Quick Start
Option 1: Claude Desktop (Local)
-
Clone and build:
git clone https://github.com/YOUR_USERNAME/mailchimp-mcp.git cd mailchimp-mcp npm install npm run build -
Get your Mailchimp API key:
- Go to Mailchimp Account Settings
- Click "Create A Key"
- Copy the API key (starts with your username and ends with
-us##)
-
Configure Claude Desktop:
On macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonOn Windows:
%APPDATA%\Claude\claude_desktop_config.json{ "mcpServers": { "mailchimp": { "command": "node", "args": ["/ABSOLUTE/PATH/TO/mailchimp-mcp/dist/index.js"], "env": { "MAILCHIMP_API_KEY": "your-api-key-here" } } } } -
Restart Claude Desktop
Option 2: Deploy to Railway
- Click the button above
- Set
MAILCHIMP_API_KEYin Railway dashboard - Use the Railway URL as your MCP server endpoint
Option 3: Docker
docker build -t mailchimp-mcp .
docker run -p 3000:3000 \
-e MAILCHIMP_API_KEY=your-api-key \
mailchimp-mcp
🔐 Authentication
Mailchimp uses API key authentication:
- Log in to Mailchimp
- Navigate to: Account → Extras → API Keys
- Click: "Create A Key"
- Copy the key (format:
username-md5hash-us##)
The API key includes your datacenter (e.g., us19) — the MCP server automatically extracts this.
📚 Available Tools
Campaigns
list_campaigns— List email campaigns with filtering by status, type, folderget_campaign— Get campaign details including content and settingscreate_campaign— Create new email campaigns (regular, automated, RSS)update_campaign— Update campaign settings, content, or subject linessend_campaign— Send campaign immediately or schedule for laterschedule_campaign— Schedule campaign for specific date/timepause_campaign— Pause a scheduled campaignreplicate_campaign— Duplicate an existing campaigncancel_campaign— Cancel a scheduled or sending campaignget_campaign_content— Get campaign HTML and text contentupdate_campaign_content— Update campaign body content
Campaign Reports
get_campaign_report— Get detailed campaign performance metricslist_campaign_reports— List reports for multiple campaignsget_unsubscribed— List contacts who unsubscribed from campaignget_click_details— Get link-by-link click trackingget_email_activity— Get subscriber-level email activity
Audiences (Lists)
list_audiences— List all audiences/listsget_audience— Get audience details and statscreate_audience— Create new audience/listupdate_audience— Update audience settingsdelete_audience— Delete an audiencebatch_subscribe— Add multiple contacts in one callbatch_unsubscribe— Remove multiple contacts
Contacts (Members)
list_contacts— List contacts in an audience with filteringget_contact— Get detailed contact informationadd_contact— Add new subscriber to audienceupdate_contact— Update contact details, tags, or merge fieldsdelete_contact— Remove contact permanentlyarchive_contact— Archive (soft delete) a contactsearch_contacts— Search across all audiencesadd_contact_tag— Apply tags to contactsremove_contact_tag— Remove tags from contacts
Segments
list_segments— List audience segmentsget_segment— Get segment details and member countcreate_segment— Create new segment with conditionsupdate_segment— Update segment name or conditionsdelete_segment— Remove a segmentlist_segment_members— List contacts in a segment
Templates
list_templates— List email templatesget_template— Get template details and HTMLcreate_template— Create new templateupdate_template— Update template contentdelete_template— Remove template
Automations
list_automations— List automated workflowsget_automation— Get automation detailspause_automation— Pause an automationstart_automation— Start a paused automationlist_automation_emails— List emails in workflowget_automation_email— Get email details from workflow
Reports & Analytics
get_account_exports— Export account datalist_unsubscribes— List all unsubscribes across audiencesget_growth_history— Get audience growth over timeget_locations— Get subscriber geographic data
🎯 Example Prompts
Once connected to Claude, you can use natural language:
Campaign Management
- "Show me all draft campaigns"
- "Create a product announcement email and schedule for Friday 10am"
- "What was the open rate on last week's newsletter?"
- "Pause the campaign scheduled for tomorrow"
Contact Management
- "Add john@example.com to the VIP list with a 'customer' tag"
- "Find all contacts with 'webinar' in their tags"
- "Update Sarah's email address to sarah.new@example.com"
- "Show me contacts who joined this month"
List Building
- "Create a new audience called 'Product Launch 2024'"
- "Import contacts from leads.csv into the newsletter list"
- "Show me all unsubscribes from the last campaign"
Analytics
- "Compare open rates between my last 3 campaigns"
- "Which links got the most clicks in yesterday's email?"
- "Show me subscribers by location"
- "What's the growth trend for my main list?"
Automation
- "List all active automations"
- "Pause the welcome series for new subscribers"
- "Show me emails in the abandoned cart workflow"
🛠️ Development
Prerequisites
- Node.js 18+
- npm or yarn
- Mailchimp account with API access
Setup
git clone https://github.com/YOUR_USERNAME/mailchimp-mcp.git
cd mailchimp-mcp
npm install
cp .env.example .env
# Edit .env with your Mailchimp API key
npm run build
npm start
Project Structure
mailchimp-mcp/
├── src/
│ ├── index.ts # Main MCP server
│ ├── tools/ # Tool implementations
│ │ ├── campaigns.ts
│ │ ├── contacts.ts
│ │ ├── audiences.ts
│ │ ├── templates.ts
│ │ └── reports.ts
│ ├── api/ # Mailchimp API client
│ │ ├── client.ts
│ │ └── auth.ts
│ └── types/ # TypeScript types
├── dist/ # Compiled JavaScript
├── tests/ # Unit tests
├── package.json
├── tsconfig.json
└── README.md
Testing
npm test # Run all tests
npm run test:watch # Watch mode
npm run test:coverage # Coverage report
Building
npm run build # Compile TypeScript
npm run build:watch # Watch mode
🐛 Troubleshooting
"Authentication failed"
- Verify your API key is correct (should include datacenter like
-us19) - Check that your API key hasn't been revoked in Mailchimp settings
- Ensure you copied the entire key including username prefix
"Rate limit exceeded"
- Mailchimp has rate limits (typically 10 requests/second)
- The MCP server automatically handles retries
- For bulk operations, reduce concurrency
"Tools not appearing in Claude"
- Restart Claude Desktop after updating config
- Check that the path in
claude_desktop_config.jsonis absolute - Verify the build completed successfully (
dist/index.jsexists)
"Audience not found"
- Audience IDs are case-sensitive
- Use
list_audiencesto get the correct ID - Some operations require admin-level API keys
📖 Resources
- Mailchimp API Documentation
- Mailchimp Marketing API
- MCP Protocol Specification
- Claude Desktop Documentation
🤝 Contributing
Contributions are welcome! Please:
- Fork the repo
- Create a feature branch (
git checkout -b feature/amazing-tool) - Commit your changes (
git commit -m 'Add amazing tool') - Push to the branch (
git push origin feature/amazing-tool) - Open a Pull Request
📄 License
MIT License - see LICENSE for details
🙏 Credits
Built by MCPEngine — AI infrastructure for business software.
Want more MCP servers? Check out our full catalog covering 30+ business platforms.
Questions? Open an issue or join our Discord community.