Klaviyo MCP Server: Ask Your Email Account Questions in Plain English

Klaviyo’s reporting is good and nobody opens it. The flows tab, the campaigns tab, the metrics explorer, a segment’s growth chart: four places, four different date pickers, and the question you had was one sentence long. Klaviyo’s MCP server lets you ask the sentence.

This is the five minute setup, the read only configuration I run, and the questions that have been worth asking.

The same idea, across the stack

Your data, in plain English

Klaviyo, GA4 and Google Ads ship official servers. Your point of sale, warehouse or helpdesk may not. I connect the official ones and build the missing ones, read only, under your own accounts.

What that looks like

If the question is why email is not earning

The five flows, in order

Most of a store's email revenue comes from five automated flows. Which to build first, the triggers and the timing, and the mistakes that send them to the wrong people.

Read the flows post

Klaviyo MCP server, two ways in: the hosted server at mcp.klaviyo.com with OAuth and a Klaviyo role, or the local klaviyo-mcp-server with a private API key, READ_ONLY true and read scopes only. Both expose reporting, campaigns, flows, segments, lists and profiles to Claude

Hosted: the five minute version

In claude.ai, open the connector directory, find Klaviyo, connect, and approve the OAuth grant with an Owner, Admin or Manager account. In Claude Code:

claude mcp add --transport http klaviyo https://mcp.klaviyo.com/mcp

The first tool call opens the browser for Klaviyo’s OAuth screen. After that, ask: “Which flows earned the most in September, by revenue per recipient?” and watch it pull the flow report and answer.

Permissions follow the role you authorised with, and access can be revoked inside Klaviyo under the account’s connected apps. That is the trade with hosted: convenient, and the guardrails are the role.

Local: the version with a hard read only switch

For analysis on a live account I prefer the local server, because it has a flag that makes writing impossible regardless of what the model is asked.

  1. In Klaviyo, Settings, API keys, create a private key with read scopes only: accounts, campaigns, flows, lists, metrics, segments, profiles, tags.
  2. Add the server to Claude Desktop or Claude Code with uvx klaviyo-mcp-server@latest, passing PRIVATE_API_KEY as the key, READ_ONLY=true, and ALLOW_USER_GENERATED_CONTENT=false.
  3. Ask the same question. Same answer, and no path to a send.

The two flags matter. READ_ONLY hides every tool that changes anything. ALLOW_USER_GENERATED_CONTENT hides the tools that produce customer visible text, templates and message bodies, so the model cannot draft something that looks sendable. With both off and a read only key, the worst outcome is a wrong answer.

The questions that have been worth asking

Five questions worth asking Klaviyo in a sentence: flow against campaign revenue, campaigns ranked by revenue per recipient rather than open rate, engaged segment drift week by week, entries and exits on the abandoned checkout flow, and Klaviyo revenue against the GA4 email source on the same days

Flow against campaign revenue. “Last month, what share of email revenue came from flows versus campaigns, and which single flow earned the most?” The five flows post says most of the revenue should be flows. This is how you check.

Revenue per recipient across sends. “Rank the last ten campaigns by revenue per recipient, not open rate.” Open rate is inflated by Apple Mail; this ranking is the honest one and the UI does not show it directly.

Segment drift. “How has the engaged 90 day segment changed in size each week since July?” A shrinking engaged segment is the early warning on deliverability before the complaint rate moves.

Who is entering a flow. “How many profiles entered the abandoned checkout flow this week, and how many exited on a placed order?” Dead flows are usually dead because nobody enters them, and this is the one query that shows it.

Cross system. With GA4 and Google Ads connected in the same conversation: “Compare the revenue Klaviyo attributes to the October campaign with what GA4 shows for the email source on the same days.” Two systems that never agree, reconciled in one question.

What it does not do

It does not know your margin, so revenue questions are revenue, not profit. It does not see Shopify, so “which products did the winback flow sell” needs the order data from the Shopify side. And it will cheerfully create a segment or a campaign if you leave write tools on and ask it to, so decide that before the first question, not after.

If the team would use this every day and you want the Shopify and helpdesk data in the same conversation, that combination is what I build. The plain explanation of what an MCP server is, for whoever has to approve the connection, is what is an MCP server, for store owners.

Frequently asked questions

Does Klaviyo have an official MCP server?
Yes. Klaviyo's MCP server went generally available in September 2025, hosted at mcp.klaviyo.com/mcp with OAuth, and as a local package, klaviyo-mcp-server, run with a private API key. It is listed in Claude's connector directory, so on claude.ai it is a one click connection; in Claude Code it is one command.
What can I ask it?
Anything the reporting and account data can answer: which flow earned the most last month, campaign open and click rates by send, revenue per recipient across the last ten campaigns, how big a segment is and how it has moved, which profiles are in a list. It also has tools that create campaigns, segments and templates, which you can switch off.
Can it send emails without me?
Only if you let it. The local server has a READ_ONLY flag and a separate flag for tools that produce customer visible content. The hosted server's permissions follow the Klaviyo role you authorise with. I run it read only for analysis and would not give an assistant campaign creation on a live account.
Which is better, hosted or local?
Hosted for most people: OAuth, no key to manage, works in claude.ai and Claude Code. Local when you want hard guarantees, because the read only flag and a private key with read scopes only make it impossible for the model to write, whatever it is asked.
What Klaviyo role do I need?
Owner, Admin or Manager to authorise the hosted server. For the local server, a private API key created under Settings, API keys, with read scopes on accounts, campaigns, flows, lists, metrics, segments and profiles.
Does this replace Klaviyo's own reporting?
No, it replaces the clicking. The numbers are Klaviyo's. What changes is that the question 'did the winback flow earn more than the campaigns last month' takes one sentence instead of four reports and a spreadsheet.
Nikhil Sharma

Nikhil Sharma

I run data and operations for a DTC brand on Shopify, consult on Meta and Google Ads, and build AI automations for ecommerce teams. I write about what I build and run.

Book a call More about me