# Klaviyo 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](https://www.klaviyo.com/account#api-keys-tab)) ## ๐Ÿ› ๏ธ Installation ### Quick Setup 1. **Clone the repository**: ```bash git clone https://github.com/relay-commerce/Klaviyo-MCP-Server.git cd Klaviyo-MCP-Server ``` 2. **Run the setup script**: ```bash chmod +x klaviyo_setup.sh ./klaviyo_setup.sh ``` 3. **Get your Klaviyo API key**: - Go to [Klaviyo API Keys](https://www.klaviyo.com/account#api-keys-tab) - Create a new private API key with appropriate scopes ### Manual Setup 1. **Create virtual environment**: ```bash python3 -m venv klaviyo_mcp_env source klaviyo_mcp_env/bin/activate ``` 2. **Install dependencies**: ```bash pip install -r klaviyo_requirements.txt ``` ## ๐Ÿงช Testing Test the server to ensure everything is working: ```bash 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` ```json { "mcpServers": { "klaviyo": { "command": "python", "args": ["/absolute/path/to/klaviyo_mcp_server.py"] } } } ``` ### With MCP CLI ```bash # 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 ```python create_profile( api_key="your-api-key", profile_data='{"email": "customer@example.com", "first_name": "John", "last_name": "Doe"}' ) ``` ### Get All Campaigns ```python get_campaigns( api_key="your-api-key", filter_expr="equals(status,'draft')", page_size=50 ) ``` ### Track a Custom Event ```python create_event( api_key="your-api-key", event_data='{"metric": {"name": "Placed Order"}, "profile": {"email": "customer@example.com"}, "properties": {"value": 99.99, "item_count": 2}}' ) ``` ### Create a Customer Segment ```python 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 ```python 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:write` - `lists:read`, `lists:write` - `campaigns:read`, `campaigns:write` - `segments:read`, `segments:write` - `events:read`, `events:write` - `flows:read`, `flows:write` - `metrics:read` - `templates:read`, `templates:write` - `catalogs:read`, `catalogs:write` - `coupons:read`, `coupons:write` ## ๐Ÿ“Š Available Tools
Profiles API (4 tools) - `get_profiles()` - List all profiles with filtering, pagination, and sorting - `create_profile()` - Create new customer profiles - `get_profile()` - Get specific profile by ID - `update_profile()` - Update existing profile data
Lists API (4 tools) - `get_lists()` - List all lists in account - `create_list()` - Create new lists - `get_list_profiles()` - Get profiles in a specific list - `add_profiles_to_list()` - Add profiles to lists
Campaigns API (4 tools) - `get_campaigns()` - List all campaigns - `create_campaign()` - Create new email campaigns - `get_campaign()` - Get specific campaign details - `send_campaign()` - Send campaigns immediately
Segments API (3 tools) - `get_segments()` - List all segments - `create_segment()` - Create new dynamic segments - `get_segment_profiles()` - Get profiles in segments
Events API (3 tools) - `get_events()` - List events with filtering and sorting - `create_event()` - Track new customer events - `get_event()` - Get specific event details
Flows API (3 tools) - `get_flows()` - List all automated flows - `get_flow()` - Get specific flow details - `update_flow_status()` - Update flow status (draft/live/stopped/archived)
Other APIs **Metrics API (2 tools)** - `get_metrics()` - List all available metrics - `get_metric()` - Get specific metric details **Templates API (2 tools)** - `get_templates()` - List all email templates - `create_template()` - Create new email templates **Catalogs API (3 tools)** - `get_catalog_items()` - List catalog items - `create_catalog_item()` - Create new catalog items - `get_catalog_variants()` - List catalog variants **Coupons API (2 tools)** - `get_coupons()` - List all coupons - `create_coupon()` - Create new coupons **Reporting API (2 tools)** - `query_campaign_values()` - Get campaign performance metrics - `query_flow_values()` - Get flow performance metrics **Accounts API (2 tools)** - `get_accounts()` - Get account information - `get_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 1. Fork the repository 2. Create a feature branch (`git checkout -b feature/amazing-feature`) 3. Commit your changes (`git commit -m 'Add amazing feature'`) 4. Push to the branch (`git push origin feature/amazing-feature`) 5. Open a Pull Request ## ๐Ÿ“„ License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## ๐Ÿ†˜ Support - **Issues**: [GitHub Issues](https://github.com/relay-commerce/Klaviyo-MCP-Server/issues) - **Klaviyo API Docs**: [Klaviyo Developer Portal](https://developers.klaviyo.com/) - **MCP Documentation**: [Model Context Protocol](https://modelcontextprotocol.io/) ## ๐Ÿ† 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**