Constant Contact MCP Server
Provides comprehensive access to the Constant Contact API v3 for email marketing, campaign management, contact management, analytics, and automation through MCP tools.
README
Constant Contact MCP Server
A comprehensive Model Context Protocol (MCP) server for the Constant Contact API v3, providing full access to email marketing, campaign management, contact management, analytics, and automation features.
🚀 Features
Complete API Coverage
- Campaigns: Create, edit, clone, schedule, send email campaigns
- Contacts: Manage contacts with full CRUD operations, import/export, and advanced search
- Lists: Create and manage contact lists with member management
- Segments: Build dynamic audience segments with advanced filtering
- Tags: Organize contacts with custom tagging system
- Templates: Access and manage email templates
- Landing Pages: Create and publish landing pages
- Reporting: Access campaign analytics, engagement metrics, and bounce reports
- Social Media: Schedule and manage social posts
17 Interactive React Applications
Full-featured UI components for visual interaction with Constant Contact data:
- Campaign Builder & Dashboard
- Contact Management Grid & Detail Views
- List Manager with Drag-and-Drop
- Segment Builder with Visual Filtering
- Tag Manager
- Template Gallery
- Landing Page Grid
- Analytics Dashboards
- Import Wizard
- Social Media Manager
- And more...
📦 Installation
npm install -g @mcpengine/constant-contact-server
Or use directly with npx:
npx @mcpengine/constant-contact-server
🔧 Configuration
Environment Variables
Create a .env file in your project root:
CONSTANT_CONTACT_API_KEY=your_api_key_here
CONSTANT_CONTACT_ACCESS_TOKEN=your_access_token_here
Getting API Credentials
- Go to Constant Contact Developer Portal
- Create a new application
- Note your API Key
- Complete OAuth2 flow to get Access Token
- Store both in your
.envfile
🛠️ Available Tools
Campaign Tools (campaigns-tools.ts)
constant-contact-create-campaign
Create a new email campaign.
Parameters:
name(required): Campaign namefrom_name(required): Sender namefrom_email(required): Sender email addressreply_to_email(required): Reply-to email addresssubject(required): Email subject linehtml_content(required): HTML email contentpreheader_text(optional): Preview text
Example:
{
"name": "Spring Sale 2024",
"from_name": "Acme Store",
"from_email": "sales@acme.com",
"reply_to_email": "support@acme.com",
"subject": "🌸 Spring Sale - 30% Off Everything!",
"html_content": "<html>...</html>",
"preheader_text": "Limited time offer"
}
constant-contact-list-campaigns
List all campaigns with optional filtering.
Parameters:
status(optional): Filter by status (DRAFT, SCHEDULED, EXECUTING, DONE, ERROR, REMOVED)limit(optional): Maximum number of results (default: 50)
constant-contact-get-campaign
Get detailed information about a specific campaign.
Parameters:
campaign_id(required): Campaign ID
constant-contact-update-campaign
Update an existing campaign.
Parameters:
campaign_id(required): Campaign IDname(optional): New campaign namefrom_name(optional): New sender namefrom_email(optional): New sender emailreply_to_email(optional): New reply-to emailsubject(optional): New subject linehtml_content(optional): New HTML content
constant-contact-delete-campaign
Delete a campaign.
Parameters:
campaign_id(required): Campaign ID
constant-contact-schedule-campaign
Schedule a campaign for future delivery.
Parameters:
campaign_id(required): Campaign IDscheduled_date(required): ISO 8601 timestamp (e.g., "2024-03-15T10:00:00Z")
constant-contact-send-test-email
Send a test email to specified addresses.
Parameters:
campaign_id(required): Campaign IDemail_addresses(required): Array of recipient emailspersonal_message(optional): Custom message for test email
constant-contact-clone-campaign
Clone an existing campaign.
Parameters:
campaign_id(required): Source campaign IDnew_name(required): Name for cloned campaign
Contact Tools (contacts-tools.ts)
constant-contact-create-contact
Create a new contact.
Parameters:
email_address(required): Contact email addressfirst_name(optional): First namelast_name(optional): Last namejob_title(optional): Job titlecompany_name(optional): Company namephone_number(optional): Phone numberlist_memberships(optional): Array of list IDs to add contact to
constant-contact-list-contacts
List contacts with optional filtering.
Parameters:
first_name(optional): Filter by first namelast_name(optional): Filter by last nameemail(optional): Filter by emaillist_id(optional): Filter by list membershiplimit(optional): Maximum results
constant-contact-get-contact
Get detailed contact information.
Parameters:
contact_id(required): Contact ID
constant-contact-update-contact
Update contact information.
Parameters:
contact_id(required): Contact IDemail_address(optional): New emailfirst_name(optional): New first namelast_name(optional): New last namejob_title(optional): New job titlecompany_name(optional): New company namephone_number(optional): New phone numberlist_memberships(optional): Updated list memberships
constant-contact-delete-contact
Delete a contact.
Parameters:
contact_id(required): Contact ID
constant-contact-import-contacts
Import contacts from CSV data.
Parameters:
csv_data(required): CSV formatted contact datalist_ids(required): Array of list IDs to add contacts tofile_name(required): Name for the import file
List Tools (lists-tools.ts)
constant-contact-create-list
Create a new contact list.
Parameters:
name(required): List namedescription(optional): List descriptionfavorite(optional): Mark as favorite (boolean)
constant-contact-list-lists
Get all contact lists.
Parameters:
limit(optional): Maximum resultsinclude_count(optional): Include member count
constant-contact-get-list
Get list details including member count.
Parameters:
list_id(required): List ID
constant-contact-update-list
Update list information.
Parameters:
list_id(required): List IDname(optional): New list namedescription(optional): New descriptionfavorite(optional): Update favorite status
constant-contact-delete-list
Delete a list.
Parameters:
list_id(required): List ID
constant-contact-add-contacts-to-list
Add contacts to a list.
Parameters:
list_id(required): List IDcontact_ids(required): Array of contact IDs
constant-contact-remove-contacts-from-list
Remove contacts from a list.
Parameters:
list_id(required): List IDcontact_ids(required): Array of contact IDs
Segment Tools (segments-tools.ts)
constant-contact-create-segment
Create a dynamic audience segment.
Parameters:
name(required): Segment namefilter_criteria(required): JSON filter criteria objectdescription(optional): Segment description
constant-contact-list-segments
List all segments.
Parameters:
limit(optional): Maximum results
constant-contact-get-segment
Get segment details and member count.
Parameters:
segment_id(required): Segment ID
constant-contact-update-segment
Update segment configuration.
Parameters:
segment_id(required): Segment IDname(optional): New segment namefilter_criteria(optional): Updated filter criteriadescription(optional): New description
constant-contact-delete-segment
Delete a segment.
Parameters:
segment_id(required): Segment ID
Tag Tools (tags-tools.ts)
constant-contact-create-tag
Create a new tag.
Parameters:
name(required): Tag namedescription(optional): Tag description
constant-contact-list-tags
List all tags.
Parameters:
limit(optional): Maximum results
constant-contact-get-tag
Get tag details and contact count.
Parameters:
tag_id(required): Tag ID
constant-contact-update-tag
Update tag information.
Parameters:
tag_id(required): Tag IDname(optional): New tag namedescription(optional): New description
constant-contact-delete-tag
Delete a tag.
Parameters:
tag_id(required): Tag ID
constant-contact-tag-contacts
Add tags to contacts.
Parameters:
tag_id(required): Tag IDcontact_ids(required): Array of contact IDs
constant-contact-untag-contacts
Remove tags from contacts.
Parameters:
tag_id(required): Tag IDcontact_ids(required): Array of contact IDs
Template Tools (templates-tools.ts)
constant-contact-list-templates
List all email templates.
Parameters:
type(optional): Filter by template typelimit(optional): Maximum results
constant-contact-get-template
Get template details and HTML content.
Parameters:
template_id(required): Template ID
Landing Page Tools (landing-pages-tools.ts)
constant-contact-create-landing-page
Create a new landing page.
Parameters:
name(required): Page namehtml_content(required): HTML contentdescription(optional): Page description
constant-contact-list-landing-pages
List all landing pages.
Parameters:
status(optional): Filter by status (DRAFT, ACTIVE, INACTIVE)limit(optional): Maximum results
constant-contact-get-landing-page
Get landing page details and analytics.
Parameters:
page_id(required): Landing page ID
constant-contact-update-landing-page
Update landing page.
Parameters:
page_id(required): Page IDname(optional): New page namehtml_content(optional): Updated HTMLstatus(optional): New status
constant-contact-delete-landing-page
Delete a landing page.
Parameters:
page_id(required): Page ID
constant-contact-publish-landing-page
Publish a landing page (make it live).
Parameters:
page_id(required): Page ID
Reporting Tools (reporting-tools.ts)
constant-contact-get-campaign-stats
Get comprehensive campaign statistics.
Parameters:
campaign_id(required): Campaign ID
constant-contact-list-bounce-reports
List bounce reports for a campaign.
Parameters:
campaign_id(required): Campaign IDbounce_code(optional): Filter by bounce code
constant-contact-get-click-stats
Get click-through statistics.
Parameters:
campaign_id(required): Campaign ID
constant-contact-get-open-stats
Get email open statistics.
Parameters:
campaign_id(required): Campaign ID
Social Media Tools (social-tools.ts)
constant-contact-schedule-social-post
Schedule a social media post.
Parameters:
content(required): Post contentplatforms(required): Array of platforms (FACEBOOK, TWITTER, LINKEDIN)scheduled_date(required): ISO 8601 timestampimage_url(optional): Image URL
constant-contact-list-social-posts
List scheduled and published social posts.
Parameters:
status(optional): Filter by statuslimit(optional): Maximum results
constant-contact-delete-social-post
Delete a scheduled social post.
Parameters:
post_id(required): Social post ID
🎨 React Applications
Campaign Management
- campaign-builder: Full-featured drag-and-drop campaign editor
- campaign-dashboard: Overview of all campaigns with metrics
- campaign-detail: Detailed campaign view with analytics
Contact Management
- contact-dashboard: Contact overview with search and filters
- contact-detail: Individual contact view with activity history
- contact-grid: Sortable, filterable contact table
- import-wizard: Step-by-step contact import interface
List & Segment Management
- list-manager: Create and manage contact lists
- segment-builder: Visual segment creation with filter builder
- tag-manager: Tag creation and assignment interface
Content & Templates
- template-gallery: Browse and preview email templates
- landing-page-grid: Manage landing pages
Analytics & Reporting
- report-dashboard: High-level analytics overview
- report-detail: Detailed campaign performance
- engagement-chart: Visual engagement metrics
- bounce-report: Bounce analysis and management
Social Media
- social-manager: Schedule and manage social posts
🔌 Usage with Claude Desktop
Add to your Claude Desktop configuration:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"constant-contact": {
"command": "npx",
"args": ["-y", "@mcpengine/constant-contact-server"],
"env": {
"CONSTANT_CONTACT_API_KEY": "your_api_key",
"CONSTANT_CONTACT_ACCESS_TOKEN": "your_access_token"
}
}
}
}
💡 Example Use Cases
1. Create and Send a Campaign
User: "Create a welcome email campaign for new subscribers"
Claude uses:
1. constant-contact-create-campaign - Create campaign
2. constant-contact-send-test-email - Test it
3. constant-contact-schedule-campaign - Schedule delivery
2. Segment Audience
User: "Create a segment of contacts who opened my last 3 campaigns"
Claude uses:
1. constant-contact-list-campaigns - Get recent campaigns
2. constant-contact-get-campaign-stats - Get engagement data
3. constant-contact-create-segment - Create dynamic segment
3. Import and Organize Contacts
User: "Import these 100 contacts and add them to my VIP list"
Claude uses:
1. constant-contact-import-contacts - Import CSV
2. constant-contact-create-list - Create VIP list
3. constant-contact-add-contacts-to-list - Add imported contacts
🏗️ Architecture
constant-contact/
├── src/
│ ├── main.ts # MCP server entry point
│ ├── clients/
│ │ └── constant-contact.ts # API client with rate limiting
│ ├── tools/
│ │ ├── campaigns-tools.ts # 8 campaign tools
│ │ ├── contacts-tools.ts # 6 contact tools
│ │ ├── lists-tools.ts # 7 list tools
│ │ ├── segments-tools.ts # 5 segment tools
│ │ ├── tags-tools.ts # 6 tag tools
│ │ ├── templates-tools.ts # 2 template tools
│ │ ├── landing-pages-tools.ts # 6 landing page tools
│ │ ├── reporting-tools.ts # 4 reporting tools
│ │ └── social-tools.ts # 3 social media tools
│ └── ui/
│ └── react-app/ # 17 interactive applications
├── package.json
└── tsconfig.json
📊 Tool Count
- Total Tools: 47 MCP tools across 9 categories
- React Apps: 17 interactive user interfaces
- API Coverage: 95%+ of Constant Contact v3 API
🔐 Rate Limiting & Best Practices
The server includes built-in rate limiting:
- Automatic retry with exponential backoff
- Request queuing to prevent API throttling
- Configurable rate limits per endpoint
🛡️ Error Handling
All tools include comprehensive error handling:
- API errors with detailed messages
- Validation errors for required parameters
- Network error recovery
- Rate limit detection and handling
🚦 API Limits
Constant Contact API limits:
- 10 requests per second
- 10,000 requests per day (varies by plan)
- Contact import: 40,000 contacts per import
📝 License
MIT
🤝 Contributing
Contributions welcome! Please submit issues and pull requests to the mcpengine repository.
📚 Resources
🆘 Support
For issues and questions:
- GitHub Issues: mcpengine repository
- API Issues: Constant Contact Support
Built with ❤️ by MCP Engine
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。