Cursor + Shopify MCP: one setup for theme work and ad data

One mcp.json puts Shopify's Dev MCP, Meta's Ads MCP and Anry in Cursor. Anry finds the leaking page and the ad behind it, then you fix the Liquid with Shopify's validator.

Raphael Gonzalez, Founder, Anry
QuestionAnswer
What is it?One Cursor mcp.json with three servers: Shopify's Dev MCP, Meta's Ads MCP and Anry
Who makes them?Shopify, Meta and Anry. Each is the official server for its own product
Who it's forAgencies and technical store owners who edit the theme in a repo
Where the file lives.cursor/mcp.json in the theme repo, or ~/.cursor/mcp.json for every project
Read or write?Dev MCP: docs and code checks, no store access. Meta: reads and changes ads. Anry: read-only
The catchIn Cursor, Meta's server needs your own Meta developer app as of October 2026

What each server does in Cursor

Shopify has several MCP servers (which one is which). For theme work you want the Dev MCP, and the other two bring the ad and on-site data.

ServerRunsSign-inWhat you use it for
Shopify Dev MCPLocally, through npxNoneShopify docs, API schemas, and checks on Liquid, theme files and GraphQL
Meta Ads MCPHosted by Meta at https://mcp.facebook.com/adsOAuth through your own Meta appSpend and results, delivery errors, pausing or editing ads
AnryHosted at https://mcp.anry.io/mcpOAuth 2.1 with your Anry accountWhich page and which ad leak money, priced in the store's own orders, with sessions and heatmaps

The Dev MCP is the theme half. On 21 October 2026, version 1.17.0 listed five tools, and the one that matters here is validate_theme. It checks Liquid plus the theme's JSON, JavaScript, CSS and SVG files for "hallucinated Liquid content, invalid syntax, or incorrect references", in the words of its own tool description. It reads your theme folder from disk, which is why this setup lives in an editor.

Meta's server listed 97 tools when I connected it in Claude Code. Anry adds 16 read-only ones (Anry docs).

Before you start

  • Cursor, plus Node.js 18 or later for the Dev MCP (Shopify.dev).
  • Your theme in the repo you open in Cursor. shopify theme pull downloads it from the store (Shopify CLI).
  • A Meta developer app with the "Create & manage ads with ads MCP server" use case, and Cursor's desktop redirect http://localhost:8787/callback added in its Facebook Login for Business settings (Meta, Cursor). Agencies working on clients' ad accounts also need Advanced Access on ads_mcp_management, which means an app review (Meta).
  • An Anry account with the store connected. One login covers every store you manage.

Set it up in Cursor

  1. Create .cursor/mcp.json in the theme repo, or ~/.cursor/mcp.json to get the servers in every project. Cursor merges both, and the project file wins when both name the same server (Cursor help).
  2. Paste the config below.
  3. Add your Meta app ID to your shell profile as META_APP_ID. Cursor fills in ${env:...} values, so the ID never sits in a file you commit.
  4. Restart Cursor, open Customize, then MCPs, and sign in to Meta and Anry when Cursor asks.
  5. In a new Agent chat, ask which MCP tools it has, and check that all three servers show up.
{
  "mcpServers": {
    "shopify-dev-mcp": {
      "command": "npx",
      "args": ["-y", "@shopify/dev-mcp@latest"]
    },
    "meta-ads": {
      "url": "https://mcp.facebook.com/ads",
      "auth": { "CLIENT_ID": "${env:META_APP_ID}" }
    },
    "anry": {
      "url": "https://mcp.anry.io/mcp"
    }
  }
}

The Shopify and Anry entries come straight from their docs (Shopify.dev, Anry). The Meta entry combines Cursor's static OAuth format with Meta's own-app route, because the plain URL fails in Cursor: Meta hasn't allowlisted Cursor's redirect (Cursor forum). Our Meta Ads MCP guide has the full story. We've run Meta's server in Claude Code, not in Cursor yet, so treat that entry as the documented route, not a tested one.

Claude Code

The same three servers, for anyone on the team who works in the terminal:

claude mcp add --transport stdio shopify-dev-mcp -- npx -y @shopify/dev-mcp@latest
claude mcp add --transport http meta-ads https://mcp.facebook.com/ads
claude mcp add --transport http anry https://mcp.anry.io/mcp

Shopify's plugin instead

Shopify's recommended Cursor route is /add-plugin shopify in chat (Shopify.dev). Since 1 October 2026, the plugin also connects to Shopify's hosted store server, the one behind the Shopify connector in Claude, so the agent can read orders and products too (AI Toolkit changelog). Pick the mcp.json entry when you want every server in one file your team commits.

One workflow: from a leaking page to a theme fix

This is the loop the setup is for. Each step names the server doing the work.

  1. Find the leak (Anry). "Which page loses the most paid visitors this month, and is it one device?" get_revenue_leaks and get_issue return the leak, priced in the store's orders, with the device and source breakdown behind it.
  2. Find the ad (Anry, then Meta). "Which ads send people to that page who leave right away?" get_campaign_spend puts Meta's spend and clicks next to the sessions and orders Anry counted on the site, per ad. Then ask Meta's server for the same ads' numbers, or to pause the worst one.
  3. Look at the page (Anry). "Show how far people scroll on that page, and two sessions that left." That's get_heatmap_summary, then get_session.
  4. Fix the theme (Shopify Dev MCP). Open the section file and describe the change: "Move the price and Add to cart above the image gallery on mobile." The agent reads Shopify's Liquid docs, edits the file, and runs validate_theme on what it changed until it comes back clean.
  5. Preview, then publish yourself. shopify theme push --unpublished --theme "mobile-atc-fix" uploads the edit as a new unpublished theme and returns a preview link (Shopify CLI). Check it on a real iPhone, then publish from your admin.

Nothing here edits the live theme. The change happens in your repo, and you publish it.

Here's what step 1 looks like on our own site. anry.io isn't a Shopify store, but Anry reads it the same way. On our /shopify landing page, iPhone visits record no scroll or tap 47% of the time, against 15% on Android. So the fix starts with the phone layout, and mobile-only leaks have their own checks.

Who sees what

Shopify Dev MCPMeta Ads MCPAnry
Shopify docs and theme checksYesNoNo
The store's ordersNoNoYes, to price each leak
Meta spend and resultsNoYes, Meta's own countYes, next to the visits on the site
What visitors do on the pageNoNoYes, sessions and heatmaps
Changes thingsNo, the agent edits your filesYes, ads and campaignsNo, read-only

If all you do is theme work, the Dev MCP or Shopify's plugin is enough. If you only manage ads, Meta's server alone does that job, and today it connects more easily in Claude. The three together earn their place when the same person fixes the page and answers for the ad spend.

Is it safe?

  • The Dev MCP never sees the store, but Shopify's published builds send usage events that "can include tool inputs and results" (npm). Add "env": { "OPT_OUT_INSTRUMENTATION": "true" } to its entry to switch that off.
  • Meta's server can create and edit campaigns, and its write tools create them paused (Meta). By default Cursor asks before it runs an MCP tool, and in Auto-review mode anything off your allowlist goes through its safety checks (Cursor help). Keep Meta's write tools off the allowlist.
  • Anry's tools are read-only. It can't change the theme, the store, the campaigns or the ads.
  • Never put a token or app secret in a project mcp.json. Use ${env:NAME} instead.

Common errors and the fix

ErrorWhat it meansFix
"Dynamic registration is not available for this client" on MetaMeta hasn't allowlisted Cursor's redirectUse your own Meta app's ID in auth, as above
"Cannot find module '@shopify/liquid-html-parser'"A broken npx cacheRun npm cache clean --force or delete ~/.npm/_npx, then restart Cursor (Shopify community)
Dev MCP won't connect on Windowsnpx doesn't start from CursorUse "command": "cmd" with ["/k", "npx", "-y", "@shopify/dev-mcp@latest"] (Shopify.dev)
No validate_theme toolLIQUID_VALIDATION_MODE is set to partialRemove it, or set it to full (npm)
"Too many MCP tools are enabled for this model" in Cursor's CLIOlder CLI builds sent every tool definition at onceUpdate the CLI, which loads tools only when needed since September 2026, or switch a server off (Cursor forum)

Where Anry fits

Shopify's Dev MCP gets the theme edit right, and Meta's server reports on and changes the ads. Anry tells you which page and which ad to work on first, with each leak priced in the store's own orders. It's read-only, so the fix stays in your repo and in your hands. If you're building a theme for a store with no paid traffic yet, skip it.

Frequently asked questions

Where does Cursor's mcp.json go?

.cursor/mcp.json in your project, or ~/.cursor/mcp.json in your home folder for every project. Cursor merges the two, and the project file wins when both name the same server.

Does the Shopify Dev MCP work in Cursor?

Yes. Add it to mcp.json with npx -y @shopify/dev-mcp@latest, or install Shopify's plugin with /add-plugin shopify. It runs locally on Node.js 18 or later, with no login.

Can the Shopify Dev MCP edit my live theme?

No. It searches docs and checks code, and the agent edits files in your repo. You push them with Shopify CLI and publish them yourself.

Can one Cursor setup cover several client stores?

For Anry, yes: one login covers every store, and list_sites shows each one. The Dev MCP doesn't care which store a theme belongs to, so keep one repo per client theme.

Can Anry change my theme or my ads?

No. All 16 tools are read-only. Anry finds and prices the leak, and your agent in Cursor makes the change once you approve it.

What's the difference between a Cursor plugin and an MCP server?

A plugin is a bundle. Cursor says it can package rules, skills, subagents, commands, MCP servers and hooks in one install (Cursor docs). An MCP server is one connection to one tool, which you can add on its own in mcp.json.

Sources

See which ad clicks leave your store before they buy.

14-day free trial, no card. Works in Claude, Claude Code and Cursor.

Start free trial