About Klaviyo MCP Server
A Python MCP server that lets AI assistants access Klaviyo APIs for customer and marketing data. Its tools cover profiles, campaigns, flows, analytics, and other major API areas, with validation and rate-limit handling.
Key features
- 0134 tools across major Klaviyo APIs
- 02Manage profiles, lists, and segments
- 03Create and send campaigns
- 04Handle events, flows, and templates
- 05Access catalogs, coupons, and reports
- 06Input validation and rate-limit handling
Use cases
- 01Update customer profiles and list memberships
- 02Create and send email campaigns
- 03Track events and query campaign performance
MCP support
Exposes Klaviyo API operations as MCP tools for AI assistants and other MCP clients. Each tool uses a Klaviyo Private API Key for authentication.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEKlaviyo MCP Server
A comprehensive Model Context Protocol (MCP) server that provides complete access to Klaviyo's API functionality. This server enables AI assistants like Claude to interact with all major Klaviyo APIs through 34+ tools covering profiles, campaigns, flows, lists, segments, events, and more.
🚀 Features
Complete API Coverage
- Profiles API (4 tools) - Create, read, update, search customer profiles
- Lists API (4 tools) - Manage lists and list memberships
- Campaigns API (4 tools) - Create, manage, and send email campaigns
- Segments API (3 tools) - Create and query dynamic customer segments
- Events API (3 tools) - Track and retrieve customer events
- Flows API (3 tools) - Manage automated email flows
- Metrics API (2 tools) - Access performance metrics
- Templates API (2 tools) - Manage email templates
- Catalogs API (3 tools) - Manage product catalogs and variants
- Coupons API (2 tools) - Create and manage discount coupons
- Reporting API (2 tools) - Query campaign and flow analytics
- Accounts API (2 tools) - Access account information
Key Features
- ✅ 34 tools covering all major Klaviyo API endpoints
- ✅ Secure authentication using Klaviyo private API keys
- ✅ Comprehensive error handling for network, HTTP, and API errors
- ✅ Rate limiting protection with timeout and retry logic
- ✅ Input validation for all parameters and JSON data
- ✅ Consistent interface - all tools follow the same patterns
- ✅ JSON:API format support with filtering, pagination, and sorting
- ✅ Complete documentation with usage examples
📋 Prerequisites
- Python 3.10 or higher
- Klaviyo account with API access
- Klaviyo Private API Key (Get yours here)
🛠️ Installation
Quick Setup
-
Clone the repository:
git clone https://github.com/relay-commerce/Klaviyo-MCP-Server.git cd Klaviyo-MCP-Server -
Run the setup script:
chmod +x klaviyo_setup.sh ./klaviyo_setup.sh -
Get your Klaviyo API key:
- Go to Klaviyo API Keys
- Create a new private API key with appropriate scopes
Manual Setup
-
Create virtual environment:
python3 -m venv klaviyo_mcp_env source klaviyo_mcp_env/bin/activate -
Install dependencies:
pip install -r klaviyo_requirements.txt
🧪 Testing
Test the server to ensure everything is working:
source klaviyo_mcp_env/bin/activate
python test_klaviyo_server.py
You should see output confirming all 34 tools are available:
✅ SUCCESS: All expected tools are available!
Test completed. Total tools available: 34
🔧 Usage
With Claude Desktop
Add the server to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"klaviyo": {
"command": "python",
"args": ["/absolute/path/to/klaviyo_mcp_server.py"]
}
}
}
With MCP CLI
# List available tools
mcp-cli tool list --server klaviyo
# Call a specific tool
mcp-cli tool call get_profiles --server klaviyo --input '{"api_key": "your-api-key"}'
📖 API Examples
Create a Customer Profile
create_profile(
api_key="your-api-key",
profile_data='{"email": "[email protected]", "first_name": "John", "last_name": "Doe"}'
)
Get All Campaigns
get_campaigns(
api_key="your-api-key",
filter_expr="equals(status,'draft')",
page_size=50
)
Track a Custom Event
create_event(
api_key="your-api-key",
event_data='{"metric": {"name": "Placed Order"}, "profile": {"email": "[email protected]"}, "properties": {"value": 99.99, "item_count": 2}}'
)
Create a Customer Segment
create_segment(
api_key="your-api-key",
segment_data='{"name": "High Value Customers", "definition": {"condition_groups": [{"conditions": [{"field": "properties.total_spent", "operator": "greater-than", "value": 1000}]}]}}'
)
Send a Campaign
send_campaign(
api_key="your-api-key",
campaign_id="campaign-id-here"
)
🔐 Authentication
The server uses Klaviyo Private API Keys for authentication. Each tool requires an api_key parameter:
- Never hardcode API keys in your code
- Pass API keys as parameters to each tool call
- Ensure your API key has the necessary scopes for the operations you want to perform
Required API Scopes
Make sure your Klaviyo API key has these scopes:
profiles:read,profiles:writelists:read,lists:writecampaigns:read,campaigns:writesegments:read,segments:writeevents:read,events:writeflows:read,flows:writemetrics:readtemplates:read,templates:writecatalogs:read,catalogs:writecoupons:read,coupons:write
📊 Available Tools
Profiles API (4 tools)
get_profiles()- List all profiles with filtering, pagination, and sortingcreate_profile()- Create new customer profilesget_profile()- Get specific profile by IDupdate_profile()- Update existing profile data
Lists API (4 tools)
get_lists()- List all lists in accountcreate_list()- Create new listsget_list_profiles()- Get profiles in a specific listadd_profiles_to_list()- Add profiles to lists
Campaigns API (4 tools)
get_campaigns()- List all campaignscreate_campaign()- Create new email campaignsget_campaign()- Get specific campaign detailssend_campaign()- Send campaigns immediately
Segments API (3 tools)
get_segments()- List all segmentscreate_segment()- Create new dynamic segmentsget_segment_profiles()- Get profiles in segments
Events API (3 tools)
get_events()- List events with filtering and sortingcreate_event()- Track new customer eventsget_event()- Get specific event details
Flows API (3 tools)
get_flows()- List all automated flowsget_flow()- Get specific flow detailsupdate_flow_status()- Update flow status (draft/live/stopped/archived)
Other APIs
Metrics API (2 tools)
get_metrics()- List all available metricsget_metric()- Get specific metric details
Templates API (2 tools)
get_templates()- List all email templatescreate_template()- Create new email templates
Catalogs API (3 tools)
get_catalog_items()- List catalog itemscreate_catalog_item()- Create new catalog itemsget_catalog_variants()- List catalog variants
Coupons API (2 tools)
get_coupons()- List all couponscreate_coupon()- Create new coupons
Reporting API (2 tools)
query_campaign_values()- Get campaign performance metricsquery_flow_values()- Get flow performance metrics
Accounts API (2 tools)
get_accounts()- Get account informationget_account()- Get specific account details
⚡ Rate Limits
Klaviyo has the following rate limits:
- Burst: 75 requests per second
- Steady: 700 requests per minute
The server includes built-in protection with timeout handling and proper error messages for rate limit scenarios.
🛡️ Security
- ✅ API keys are passed as parameters (never hardcoded)
- ✅ All requests use HTTPS
- ✅ Proper error handling prevents sensitive data exposure
- ✅ Input validation for all parameters
- ✅ No secrets stored in code or logs
🔧 Technical Details
- API Base URL:
https://a.klaviyo.com/api - API Revision:
2025-04-15 - Protocol: JSON:API format
- Authentication: Klaviyo-API-Key header
- Python Version: 3.10+
- MCP Version: 1.0.0+
📁 File Structure
Klaviyo-MCP-Server/
├── klaviyo_mcp_server.py # Main MCP server implementation
├── klaviyo_requirements.txt # Python dependencies
├── klaviyo_setup.sh # Setup script
├── klaviyo_documentation.md # Detailed documentation
├── test_klaviyo_server.py # Test script
└── README.md # This file
🤝 Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🆘 Support
- Issues: GitHub Issues
- Klaviyo API Docs: Klaviyo Developer Portal
- MCP Documentation: Model Context Protocol
🏆 Why This MCP Server?
This is the most comprehensive Klaviyo MCP integration available, providing:
- ✅ Complete API coverage - All major Klaviyo endpoints
- ✅ Production ready - Proper error handling and security
- ✅ Easy to use - Consistent interface across all tools
- ✅ Well documented - Clear examples and setup instructions
- ✅ Actively maintained - Regular updates and improvements
Perfect for businesses wanting to integrate Klaviyo functionality into AI-powered workflows, customer service automation, marketing automation, and data analysis tasks.
Made with ❤️ for the Klaviyo and MCP communities
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.