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.
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.

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.
- In Klaviyo, Settings, API keys, create a private key with read scopes only: accounts, campaigns, flows, lists, metrics, segments, profiles, tags.
- Add the server to Claude Desktop or Claude Code with
uvx klaviyo-mcp-server@latest, passingPRIVATE_API_KEYas the key,READ_ONLY=true, andALLOW_USER_GENERATED_CONTENT=false. - 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

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?
What can I ask it?
Can it send emails without me?
Which is better, hosted or local?
What Klaviyo role do I need?
Does this replace Klaviyo's own reporting?
Get new posts in your inbox
Occasional notes on Shopify, paid ads, and what I learn. No spam.
Thanks — check your inbox to confirm.
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.