Klaviyo API MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Klaviyo API MCP Server show me my recent campaigns"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Klaviyo API MCP Server
A comprehensive Model Context Protocol (MCP) server for interacting with Klaviyo's API. This server provides tools and resources for managing profiles, lists, events, campaigns, flows, templates, segments, metrics, catalogs, and data privacy in Klaviyo.
## Features
- Complete coverage of Klaviyo's API functionality
- Structured tools with proper validation using Zod
- Documentation resources for API reference
- Error handling and logging
## Setup
1. Clone this repository
2. Install dependencies:
```
npm install
```
3. Create a `.env` file with your Klaviyo API key:
```
KLAVIYO_API_KEY=your_private_api_key_here
```
4. Start the server:
```
npm run dev
```
## Testing with MCP Inspector
You can test the server using the MCP Inspector:
```
npm run inspect
```
This will open a web interface where you can:
- Browse available tools and resources
- Test tools with different inputs
- View server logs and responses
## Available Tools
### Profiles
- `get_profiles`: Get a list of profiles with optional filtering
- `get_profile`: Get a specific profile by ID
- `create_profile`: Create a new profile
- `update_profile`: Update an existing profile
- `delete_profile`: Delete a profile
### Lists
- `get_lists`: Get all lists
- `get_list`: Get a specific list by ID
- `create_list`: Create a new list
- `update_list`: Update an existing list
- `delete_list`: Delete a list
- `get_list_profiles`: Get profiles in a list
- `add_profiles_to_list`: Add profiles to a list
- `remove_profiles_from_list`: Remove profiles from a list
### Events
- `get_events`: Get a list of events with optional filtering
- `get_event`: Get a specific event by ID
- `create_event`: Create a new event
### Campaigns
- `get_campaigns`: Get a list of campaigns with optional filtering
- `get_campaign`: Get a specific campaign by ID
- `create_campaign`: Create a new campaign
- `update_campaign`: Update an existing campaign
- `delete_campaign`: Delete a campaign
- `send_campaign`: Send a campaign
### Flows
- `get_flows`: Get a list of flows with optional filtering
- `get_flow`: Get a specific flow by ID
- `update_flow_status`: Update the status of a flow
### Templates
- `get_templates`: Get a list of templates with optional filtering
- `get_template`: Get a specific template by ID
- `create_template`: Create a new template
- `update_template`: Update an existing template
- `delete_template`: Delete a template
- `clone_template`: Clone an existing template
- `render_template`: Render a template with context variables
### Segments
- `get_segments`: Get a list of segments with optional filtering
- `get_segment`: Get a specific segment by ID
### Metrics
- `get_metrics`: Get a list of metrics with optional filtering
- `get_metric`: Get a specific metric by ID
- `get_metric_aggregate`: Get aggregate data for a metric
- `get_metric_timeline`: Get timeline data for a metric
### Catalogs
- `get_catalogs`: Get a list of catalogs
- `get_catalog`: Get a specific catalog by ID
- `get_catalog_items`: Get items in a catalog
- `get_catalog_item`: Get a specific item in a catalog
- `create_catalog_item`: Create a new item in a catalog
- `update_catalog_item`: Update an existing item in a catalog
- `delete_catalog_item`: Delete an item from a catalog
### Data Privacy
- `create_deletion_request`: Create a new data deletion request
- `get_deletion_requests`: Get a list of data deletion requests
- `get_deletion_request`: Get a specific data deletion request by ID
## Available Resources
- `klaviyo://docs/{section}`: Documentation for different API sections
- Available sections: overview, profiles, lists, events, campaigns, flows, segments, metrics, templates, catalogs, data-privacy
## License
MIT
Available Tools
48 toolsadd_profiles_to_listD
Inputs: list_id (required), profile_ids (required).
clone_templateD
Inputs: template_id (required), name (required).
create_campaignD
Inputs: name (required), template_id (required), list_id (required), subject (required), +2 more.
create_catalog_itemD
Inputs: catalog_id (required), external_id (required), title (required), description, +4 more.
create_deletion_requestD
Inputs: email, phone_number, profile_id.
create_eventD
Inputs: metric (required), profile (required), properties, time.
create_listD
Inputs: name (required).
create_profileD
Inputs: email, phone_number, external_id, first_name, +2 more.
create_templateD
Inputs: name (required), html (required).
delete_campaignD
Inputs: campaign_id (required).
delete_catalog_itemD
Inputs: catalog_id (required), item_id (required).
delete_listD
Inputs: list_id (required).
delete_profileD
Inputs: profile_id (required).
delete_templateD
Inputs: template_id (required).
get_campaignD
Inputs: campaign_id (required).
get_campaignsD
Inputs: filter, page_size, page_cursor.
get_catalogD
Inputs: catalog_id (required).
get_catalog_itemD
Inputs: catalog_id (required), item_id (required).
get_catalog_itemsD
Inputs: catalog_id (required), filter, page_size, page_cursor.
get_catalogsD
Inputs: page_size, page_cursor.
get_deletion_requestD
Inputs: request_id (required).
get_deletion_requestsD
Inputs: page_size, page_cursor.
get_eventD
Inputs: event_id (required).
get_eventsD
Inputs: filter, page_size, page_cursor.
get_flowD
Inputs: flow_id (required).
get_flowsD
Inputs: filter, page_size, page_cursor.
get_listD
Inputs: list_id (required).
get_list_profilesD
Inputs: list_id (required), page_size, page_cursor.
get_listsD
Inputs: page_size, page_cursor.
get_metricD
Inputs: metric_id (required).
get_metric_aggregateD
Inputs: metric_id (required), measurement (required), start_date (required), end_date (required), +1 more.
get_metricsD
Inputs: page_size, page_cursor.
get_metric_timelineD
Inputs: metric_id (required), start_date, end_date, page_size, +1 more.
get_profileD
Inputs: profile_id (required).
get_profilesD
Inputs: filter, page_size, page_cursor.
get_segmentD
Inputs: segment_id (required).
get_segmentsD
Inputs: filter, page_size, page_cursor.
get_templateD
Inputs: template_id (required).
get_templatesD
Inputs: filter, page_size, page_cursor.
remove_profiles_from_listD
Inputs: list_id (required), profile_ids (required).
render_templateD
Inputs: template_id (required), context (required).
send_campaignD
Inputs: campaign_id (required).
update_campaignD
Inputs: campaign_id (required), name, subject, from_email, +1 more.
update_catalog_itemD
Inputs: catalog_id (required), item_id (required), title, description, +4 more.
update_flow_statusD
Inputs: flow_id (required), status (required).
update_listD
Inputs: list_id (required), name (required).
update_profileD
Inputs: profile_id (required), email, phone_number, external_id, +3 more.
update_templateD
Inputs: template_id (required), name, html.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 48 tools
With 48 tools and no descriptions, agents must rely solely on tool names. While names like create_campaign and get_campaigns are clear, similar names (e.g., get_catalog vs get_catalogs, get_metric_aggregate vs get_metric_timeline) create ambiguity without explanatory context.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_campaign, delete_profile, get_metrics). There are minor deviations like remove_profiles_from_list, but the overall pattern is uniform and predictable.
48 tools is excessive for most MCP servers. Even for a comprehensive API like Klaviyo, this many tools make the surface unwieldy and increase cognitive load, exceeding the recommended upper bound of 25.
The tool set covers CRUD operations for major resources (campaigns, lists, profiles, templates, catalog items) and includes specialized actions (send_campaign, clone_template, add_profiles_to_list). Minor gaps like missing delete operations for events and flows prevent a perfect score.
Maintenance
Related MCP Connectors
Klaviyo MCP Pack — wraps the Klaviyo API for email marketing
Hosted Klaviyo MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
AI-native email marketing. Campaigns, automations, transactional, contacts, and analytics.
Run email marketing from your AI assistant: contacts, newsletters, automations, behavior emails.
Related MCP Servers
- FlicenseDqualityDmaintenanceA comprehensive Model Context Protocol server that enables interaction with the Klaviyo API, providing tools and resources for managing customer profiles, lists, segments, campaigns, flows, and various marketing automation features.473-

Sequenzy MCP Serverofficial
AlicenseBqualityCmaintenanceEnables management of AI-powered email marketing automation, including subscriber segments, campaigns, and templates. It allows users to generate email sequences with AI and track detailed analytics through natural language commands.1002,940 npm3MIT- FlicenseBqualityDmaintenanceEnables management of email campaigns, subscribers, lists, segments, journeys, templates, transactional email, and client/account settings through the Campaign Monitor API via natural language.1001-
- AlicenseNot gradedqualityDmaintenanceEnables interaction with the Klaviyo API for marketing automation, including managing lists, campaigns, and customer data.1MIT