Skip to main content
Glama
Klaviyo API MCP Server

Klaviyo API MCP Server

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 tools
add_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

    D1.8/5.0

    Scored across 48 tools

    Disambiguation3/5

    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.

    Naming Consistency5/5

    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.

    Tool Count2/5

    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.

    Completeness4/5

    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

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      C
      maintenance
      Enables 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.
      100
      2,940 npm
      3
      MIT
    • F
      license
      B
      quality
      D
      maintenance
      Enables management of email campaigns, subscribers, lists, segments, journeys, templates, transactional email, and client/account settings through the Campaign Monitor API via natural language.
      100
      1
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables interaction with the Klaviyo API for marketing automation, including managing lists, campaigns, and customer data.
      1
      MIT