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
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.