Pricing Academy Blog

Claude Desktop MCP: connect your funnels

Claude Desktop can't run terminal commands, but it can use an MCP server. Here is how to give it your ElasticFunnels pages with ef mcp, what it can do there, and where it stops.

Illustration: a chat app window and a folder with a key, joined by a cable, and the monitor mascot holding up the plug in the middle
The short answer

MCP, the Model Context Protocol, is how Claude Desktop uses outside tools. An MCP server is a small program the app starts; it lists its tools and Claude calls them when a chat needs them.

ef mcp is the ElasticFunnels MCP server. Add it to Claude Desktop's config and Claude can list, read, create and edit the pages in your brand, read components and products, and hand you preview links. The config names a folder, never a key.

If you already work in Claude Desktop, it's where I'd start working on pages with an AI. Through MCP it edits pages well and does little else, and the one setting that matters most (draft or live) is easy to get wrong. Both are covered below, before they cost you a live page.

What you need

  • Claude Desktop, signed in.
  • An ElasticFunnels brand. The CLI and its MCP server are included on every plan.
  • Node.js 18 or newer and the CLI: npm i -g @elasticfunnels/cli.

Step 1: bind a folder to your brand

The MCP server reads its credential from a project folder, so make one first. ef init signs you in through the browser and stores the key in .ef/auth inside the folder, readable only by you.

mkdir ~/my-brand && cd ~/my-brand
ef init

Step 2: find the full paths

Claude Desktop starts MCP servers with a short PATH. If it can't find ef, or the node that ef runs on, the server never starts. Note both paths:

which ef node
/opt/homebrew/bin/ef
/opt/homebrew/bin/node

Yours may differ (nvm, for example, puts them under ~/.nvm). Use what the command prints.

Step 3: add the server to Claude Desktop's config

In Claude Desktop open Settings → Developer → Edit Config. That opens claude_desktop_config.json: on macOS in ~/Library/Application Support/Claude/, on Windows in %APPDATA%\Claude\. Add an elasticfunnels entry:

{
  "mcpServers": {
    "elasticfunnels": {
      "command": "/opt/homebrew/bin/ef",
      "args": ["mcp", "--project", "/Users/you/my-brand"],
      "env": { "PATH": "/opt/homebrew/bin:/usr/bin:/bin" }
    }
  }
}

--project is the folder from step 1. The env line puts the folder that holds node on the server's PATH. Nothing in this file is a secret, so it is safe in a screenshot or a support thread. I like that design a lot. The key never lives in a config file that gets pasted into chats.

Illustration: a chat window, a plug and a folder with a key joined by two-way arrows, with four small page cards under the folder
Claude Desktop talks to ef mcp; ef mcp uses the key in your project folder to reach your pages. The app never holds the key.

Step 4: restart and check the tools

Quit Claude Desktop completely and open it again. In a new chat, the tools menu lists elasticfunnels with eight tools:

ToolWhat it does
ef_list_pagesLists pages with id, title, slug and status
ef_get_pageReads one page's HTML, the draft or the published version
ef_update_page_htmlReplaces a page's HTML; publishes unless saved as a draft
ef_create_pageCreates an empty page and returns its id
ef_list_componentsLists reusable components
ef_get_componentReads one component's HTML
ef_list_productsLists products with code and price
ef_preview_urlReturns a page's preview link

Seven of these only read or create. The one to respect is ef_update_page_html, because it writes to a live page unless it's told otherwise. Step 5 is mostly about that tool.

Step 5: ask for a draft

Start with something you can check in a minute:

List my pages. Open the advertorial, tighten the first two paragraphs
and add a reader quote before the second section. Save it as a draft,
not live, and give me the preview link.

What Claude does: it calls ef_list_pages to find the page id, ef_get_page to read the HTML, then ef_update_page_html with the full new body and draft set, and finally ef_preview_url. The edit tool returns the page as the server saved it, so Claude's next edit starts from the real version.

Ask for drafts. The edit tool publishes straight away unless Claude passes draft, and it replaces the whole body, not one section. Open the preview, then publish from the app or ask Claude to save it live. I'd put "save it as a draft" in every prompt that touches a page people are paying to reach.

What Claude Desktop can't do through MCP

ef mcp covers pages, and reading components and products. Today it does not:

  • set up split tests, redirects or other page events,
  • read analytics or split-test results,
  • edit components, assets, scripts or brand variables,
  • touch your ad campaigns, which no part of ElasticFunnels' CLI does.

For those, use an agent that can run the CLI. Claude Code runs a full advertorial split test from pull to result, and Codex does the same with an AGENTS.md.

Using Claude Code? The same server connects there with one command. Watch it step by step: add an MCP server to Claude Code.

If the tools don't show up

  • env: node: No such file or directory. The server started but found no Node. Add the folder that holds node to the env PATH in the config.
  • No elasticfunnels entry at all. The JSON is invalid or the app wasn't fully restarted. Check the commas, then quit from the menu bar or tray, not just the window.
  • A tool returns an error about the project. The --project folder isn't bound. Run ef status in it; if it isn't bound, run ef init there.
  • Test the server by hand. In a terminal, ef mcp --project ~/my-brand prints [ef mcp] starting (protocol 2024-11-05, 8 tools) to stderr and then waits for the app. Press Ctrl-C to stop it.

Everything an agent can do in ElasticFunnels, with and without a terminal, is on the AI marketing agents page.

My take
  • I'd never let Claude Desktop edit the page your ads point to without "draft" in the prompt. The edit replaces the whole body, so one bad section takes the page with it.
  • Don't ask it for a "quick tweak" to one paragraph and assume the rest survived. Open the preview and read the whole page.
  • Don't try to squeeze split tests or stats out of MCP with clever prompts. Those tools aren't there; use a CLI agent.

MCP in Claude Desktop is the gentlest way in. You stay in a chat window, you see a preview before anything changes, and the key never leaves your folder. When you catch yourself wanting it to read a test result or wire a split, that's the sign you've outgrown it, and the CLI agents are one step away.

FAQ

Claude Desktop MCP FAQ

What is an MCP server?

A small program that gives an AI app a set of tools over the Model Context Protocol. Claude Desktop starts it, asks which tools it has, and calls them when a chat needs them. ef mcp is the ElasticFunnels one.

Where is the Claude Desktop MCP config file?

Open it from Claude Desktop with Settings, Developer, Edit Config. On macOS it is ~/Library/Application Support/Claude/claude_desktop_config.json and on Windows %APPDATA%\Claude\claude_desktop_config.json.

Does the config file contain my ElasticFunnels key?

No. It only names the project folder. ef mcp reads the credential from that folder's .ef/auth file, which ef init creates with owner-only permissions.

Can Claude Desktop publish pages?

Yes. The edit tool publishes immediately unless Claude passes draft, so ask for drafts and check the preview link before you publish.

Can Claude Desktop set up split tests or read stats?

Not through ef mcp today. Its eight tools cover pages, components, products and preview links. Split tests and stats need the ef CLI, which Claude Code or Codex can run.

Give Claude your funnel pages

Bind a folder with ef init and add ef mcp to Claude Desktop. Start a 14-day free trial.