Skip to main content

klaviyo-mcp-server-extended

A community fork of Klaviyo's official klaviyo-mcp-server (v0.4.1) adding missing campaign/template traversal tools plus universal content support that the official server does not expose.

This is an unofficial, unsupported patch. It layers the missing tools onto the official code without changing any existing behavior — everything that works in the official server continues to work identically here.

Why this exists

As of April 2026, the official Klaviyo MCP server (v0.4.1) does not expose tools to:

  1. List email templates (only fetch by known ID)
  2. Traverse from a campaign or campaign message to its associated template
  3. Clone a campaign or a template

These gaps make it impossible to clone an email campaign end-to-end through the MCP server or safely manage Klaviyo's newer reusable universal content blocks, even though the underlying REST API fully supports all of these operations and the bundled klaviyo-api Python SDK already has the methods wired up. This fork simply exposes them.

Tools added

These tools are thin wrappers around methods that already exist in the official klaviyo-api SDK. They follow the same style conventions as the surrounding code (@mcp_tool, get_klaviyo_client(), clean_result()).

Tool Writes? REST endpoint
klaviyo_get_email_templates no GET /api/templates
klaviyo_clone_email_template yes POST /api/template-clone
klaviyo_get_messages_for_campaign no GET /api/campaigns/{id}/campaign-messages
klaviyo_get_template_for_campaign_message no GET /api/campaign-messages/{id}/template
klaviyo_get_template_id_for_campaign_message no GET /api/campaign-messages/{id}/relationships/template
klaviyo_clone_campaign yes POST /api/campaign-clone
klaviyo_get_universal_content_blocks no GET /api/template-universal-content
klaviyo_get_universal_content_block no GET /api/template-universal-content/{id}
klaviyo_create_universal_content_block yes POST /api/template-universal-content
klaviyo_update_universal_content_block yes PATCH /api/template-universal-content/{id}
klaviyo_delete_universal_content_block yes DELETE /api/template-universal-content/{id}
klaviyo_get_universal_content_block_html no GET /api/template-universal-content/{id}
klaviyo_get_universal_content_blocks_for_template no derived from template HTML + definition scan
klaviyo_get_universal_content_blocks_for_campaign no derived from campaign messages -> template traversal

All other tools from the official server are preserved unchanged.

Universal content workflow

For Klaviyo's newer reusable template blocks:

  1. discover blocks with klaviyo_get_universal_content_blocks
  2. inspect a block with klaviyo_get_universal_content_block
  3. create or update reusable blocks with the universal content write tools
  4. embed the returned block ID into template HTML with:
<div data-klaviyo-universal-block="block_id">&nbsp;<div>

Warning: updating or deleting a universal content block affects every template that uses it.

Relationship helpers are also available:

  • template -> universal content blocks
  • campaign -> universal content blocks

Authentication

Identical to the official local server: private API key via the PRIVATE_API_KEY environment variable. This fork does not provide OAuth or any remote hosting — OAuth is Klaviyo's own gateway at https://mcp.klaviyo.com/mcp and is not part of the open-source package.

The private API key needs the same scopes as the official server. For the new tools specifically:

  • templates:read — for get_email_templates, get_template_for_campaign_message, get_universal_content_blocks, get_universal_content_block, get_universal_content_block_html
  • templates:write — for clone_email_template, create_universal_content_block, update_universal_content_block, delete_universal_content_block
  • campaigns:read — for get_messages_for_campaign, get_template_id_for_campaign_message
  • campaigns:write — for clone_campaign

The full recommended scope set from Klaviyo's docs already covers all of these.

Installation

From PyPI

After this package is published, install and run the fork with:

uvx --from klaviyo-mcp-server-extended klaviyo-mcp-server

Pin the release version for reproducible MCP client configs:

uvx --from klaviyo-mcp-server-extended==0.4.6 klaviyo-mcp-server

From a local wheel

Build the wheel first:

uv build

Then run the generated wheel from dist/:

uvx --from ./dist/klaviyo_mcp_server_extended-0.4.6-py3-none-any.whl klaviyo-mcp-server

MCP client config (Claude Desktop, Cursor, VS Code)

Replace the official uvx klaviyo-mcp-server@latest invocation with uvx --from klaviyo-mcp-server-extended==0.4.6 klaviyo-mcp-server. For example, in Claude Desktop:

{
  "mcpServers": {
    "klaviyo": {
      "command": "uvx",
      "args": [
        "--from",
        "klaviyo-mcp-server-extended==0.4.6",
        "klaviyo-mcp-server"
      ],
      "env": {
        "PRIVATE_API_KEY": "YOUR_API_KEY",
        "READ_ONLY": "false",
        "ALLOW_USER_GENERATED_CONTENT": "false"
      }
    }
  }
}

The entry point command (klaviyo-mcp-server) is unchanged, so no downstream agent code needs to change — only the --from package is new.

Verifying the fork loaded

After restarting your MCP client, your tool list should include the six new tools alongside the existing ones. In Claude Desktop, click Search and tools → klaviyo to confirm.

Upstream relationship

  • Based on klaviyo-mcp-server==0.4.1 from PyPI (published 2026-03-05)
  • Version 0.4.8, based on the upstream 0.4.1 base plus added campaign/template traversal, universal content, and forward relationship support
  • No changes to existing tools, models, utilities, prompts, or scripts
  • The added tools are the only diff

If Klaviyo eventually ships equivalent tools upstream, uninstall this fork and revert to the official klaviyo-mcp-server@latest.

License

MIT, matching the upstream package. See LICENSE.

Metadata

Release files for klaviyo-mcp-server-extended 0.4.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for klaviyo-mcp-server-extended 0.4.8
File Size Uploaded
klaviyo_mcp_server_extended-0.4.8.tar.gz 35.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for klaviyo-mcp-server-extended 0.4.8
File Interpreter ABI Platform
klaviyo_mcp_server_extended-0.4.8-py3-none-any.whl Python 3 none any Details

Total release size: 88.8 kB

Release files / klaviyo_mcp_server_extended-0.4.8.tar.gz

Download URL klaviyo_mcp_server_extended-0.4.8.tar.gz
Size 35.9 kB
Tags Source
SHA-256 checksum
How to use checksums
a8b2960fa0918581cb5919ee04e73fbb794ae9d0b677715004a68312dbc5729a
BLAKE2b-256 checksum
How to use checksums
db8754ba7db1ad84a185ff1bd3b1b378c2a26cbb2e53a76a8672ba60d173b4b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 27, 2026.

Transparency log

Release files / klaviyo_mcp_server_extended-0.4.8-py3-none-any.whl

Download URL klaviyo_mcp_server_extended-0.4.8-py3-none-any.whl
Size 52.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
625ad8f500802c29b346b8cd635af01cac0fd6ce4bdebd5a2f5be6f5b355e6ba
BLAKE2b-256 checksum
How to use checksums
326bf7543032066c8b5b2464d7cc8dbfcd1c74da3190fba1d3366ef90fbe0ed6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 27, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.8 This release

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page