How to Build an SEO Agent: Frase MCP + Claude & Cursor

Connect Frase's MCP server to Claude Code or Cursor and turn your AI assistant into an SEO agent that researches, scores, and optimizes content for you.
You can build a working SEO agent in about ten minutes, and you won't write a line of code to do it. The work is plumbing: you connect Frase's MCP server to an AI assistant you already use — Claude Code or Cursor — so it can research, score, and optimize content for you, not just describe how. After that, it runs the parts of SEO that used to eat your afternoon.
I've been living in this setup for the past few months, and the shift feels less like a new tool and more like my assistant grew hands. Below is exactly how I wired it up, how to make it behave like an agent instead of a chatbot with API access, and — the part most setup guides skip — where it still needs a human.
What is an SEO agent, really?
An SEO agent is an AI assistant that can take actions in your SEO stack, not just give advice about it. The difference is whether the model can do the thing.
Ask a normal chatbot to "optimize this article for AI search" and it hands you a tidy list of suggestions you then go and apply by hand. An agent with the right tools reads the live SERP, scores your draft for SEO and GEO, applies the changes, re-scores, publishes directly, and tells you what moved. Same request — but the loop closes without you tabbing between five windows.
That "take actions" capability comes from one piece of connective tissue: MCP.
Why MCP is the piece that makes this work
MCP is the Model Context Protocol, an open standard introduced so AI assistants can talk to outside tools through one shared interface. Instead of every tool building a bespoke plugin for every model, a tool ships a single MCP server and any MCP-aware assistant can use it.
Most SEO integrations you've seen are read-only: the assistant pulls keyword data or rankings, then stops. Frase's MCP server is read-write — the assistant can run research, generate briefs, score and rewrite content, check your AI visibility, and run site audits. That line between an assistant that reports and one that acts is the whole reason this is worth setting up.
One quick clarification, because the names collide: Frase also has an in-app Agent that lives inside the Frase editor. That's a different thing from the MCP server, which is what brings Frase's toolset into Claude or Cursor. This post is about the second one.
What you need before you start
Three things:
- A Frase plan with API access (that's all of them), and your Frase API key (find it in your Frase account settings, under API).
- Either Claude Desktop, Claude Code (Anthropic's terminal assistant), Cursor (the AI code editor) or your other AI of choice installed and ready to use (for the purpose of this article we'll be referring to Claude Code).
- Node.js on your machine, since the server runs through
npx.
One rule before we go further: treat your API key like a password. Don't paste it into a shared doc, don't commit it to a repository, and use an environment variable so it never sits in plain text in a file you might hand to someone else.
How do you connect Frase to Claude Code?
Claude Code is the fastest path because it's a single command. In your terminal:
claude mcp add frase -- npx -y @frase/mcp-server
Then set your key as an environment variable so the server can authenticate:
export FRASE_API_KEY="your_frase_api_key"
Restart Claude Code and it discovers Frase's tools automatically. Ask it something concrete to confirm it's live — "list the AI visibility prompts on my site" or "score this URL for GEO." If it comes back with real data, you have an agent.
The same package works across Claude Code, Cursor, Windsurf, VS Code Copilot, and a handful of others, so the steps transfer if your assistant of choice isn't one of these two.
How do you connect Frase to Cursor?
Cursor uses a config file instead of a command. Create or open ~/.cursor/mcp.json (or a project-level .cursor/mcp.json if you only want Frase in one workspace) and add it:
{
"mcpServers": {
"frase": {
"command": "npx",
"args": ["-y", "@frase/mcp-server"],
"env": {
"FRASE_API_KEY": "your_frase_api_key"
}
}
}
}
Save it, reopen Cursor, and check Settings → MCP — you should see "frase" listed with its tools enabled. If it shows an error instead, it's almost always the API key or a missing Node install, not the config. (Cursor documents its MCP support here if you want the platform's own reference.)
That's the entire connection. Now the more interesting part: making it act like an agent.
How do you turn the integration into an actual agent?
A connected tool is not yet an agent. Out of the box, your assistant uses Frase's tools reactively — you ask, it acts. To get agent behavior, you give it standing instructions: who it is, what loop to run, and what it is not allowed to do without you.
Both Claude Code and Cursor read a rules file (a CLAUDE.md for Claude Code, a rules file in Cursor). Drop in something like this:
You are my SEO content agent. For any article task, run this loop:
1. Analyze the live SERP and top competitors for the target keyword.
2. Check the topic's AI visibility — who gets cited now, and for what.
3. Draft or optimize, then score for BOTH SEO and GEO and hit X score before showing me.
4. Re-score after each change and report what moved.
Always use site_id [your site id]. Never publish without my explicit approval.
Surface trade-offs; don't chase a score by padding the draft.
Now a single instruction — "work up the brief for 'best CRM for nonprofits'" — kicks off the whole sequence. The agent researches, scores, and comes back with a brief and a number, and you're reviewing instead of assembling. The research-to-optimization loop stops being a diagram and starts being something that runs on one prompt.
The above instruction file is fairly simplistic. But you can build this out with additional detail on using the right brand voice, quality checks, and external linking for example. These are all features that exist within Frase already that you can tap into.
What can the agent actually do once it's running?
The workflows I reach for most:
- Briefs and research on demand. "Build a brief for [keyword]" pulls the SERP, competitor structure, and research into one outline.
- Dual SEO + GEO scoring. It scores a draft for traditional search and for whether AI engines will cite it — the scoring most tools still don't do.
- AI visibility checks. "Who does ChatGPT cite for [topic]?" runs against Frase's AI visibility tracking so you see the gap before you write a word.
- Audits and content gaps. Ask what's decaying, or what competitors rank for that you don't. It pulls in your GSC data via Frase and can build out a content plan based on the data.
Each of these used to be a separate tab and a manual export. Now they're sentences.
How do you close the loop and auto-update live content?
Everything so far is the front half of the job: research, write, optimize, publish. The bigger win is the back half — watching what's already live and fixing it before it slips. That's the full loop Frase is built around: listen, create, publish, monitor, fix. An agent is what lets you run those last two without babysitting them.
Content decay can be very damaging to your hard work, plus time consuming to fix. A post ranks, then six months later a competitor refreshes theirs, Google shifts, an AI engine starts citing someone else, and your traffic dips a few percent at a time. Catching that by hand means re-auditing dozens of URLs on a schedule nobody keeps.
This is where Content Guard comes in. It watches your published pages for decay and ranking drops and drafts the fix — and through the MCP server, your agent can act on it. Wire it into the rules file:
When Content Guard detects decay: Apply low-risk fixes directly and log them. Flag anything structural for me to review.
Now the loop runs on its own cadence. The agent surfaces the decay, proposes the fix, handles the small stuff, and escalates the calls that need you. Content updates are some of the highest-ROI work in SEO and some of the most tedious — which is exactly what makes them the first thing worth handing off.
Where does it still need a human?
Now the honest part, because human judgement still matters.
The human's job isn't to do the work anymore — it's to own the quality gates. The agent can run the loop end to end; you decide which moments still need your eyes before something goes live. Early on that's most of them, and that's the right instinct: it's good at the mechanical middle of SEO and weaker at other aspects — particularly while it's still getting to know your brand and your style.
So treat it like a junior colleague in their first month. You check its work every time — the brief, the draft, the fix it wants to push — and you give specific feedback when it gets something wrong. "Don't touch headers." "That's not our voice." "Leave the internal links alone." The corrections aren't one-offs; you fold them back into the rules file (or set them permanently in your Frase Brand Hub), and the next run is a little more trustworthy than the last.
As that trust builds, you move the gates. You stop reviewing every small change and let it push low-level fixes live on its own — a refreshed stat, a tightened meta description, an added FAQ — while you keep approval on the bigger calls: a structural rewrite, a new page, anything that changes the argument. You're not reviewing everything anymore; you're reviewing what matters. That's the real payoff, because the routine content updates it takes off your plate are exactly the high-value, time-eating work most teams never get to.
Start small
Wire up one assistant, give it one rules file, and run it on one real article this week. You'll learn more from a single closed loop than from any setup guide, including this one.
If you want the full toolset behind it — dual SEO and GEO scoring, AI visibility tracking, audits, the whole loop — that's what Frase is, and the MCP server comes with every plan.
FAQs
Do I need to know how to code to build an SEO agent?
No. Setup is one terminal command (Claude Code) or one config file (Cursor), and the agent is driven in plain English. If you can edit a JSON file and copy an API key, you can build it.
What's the difference between Frase's MCP server and the Frase Agent?
The Frase Agent lives inside the Frase editor and helps you write and optimize there. The MCP server brings Frase's tools into an external assistant like Claude Code or Cursor, so it can run Frase actions outside the app. Different tools, different homes.
Which is easier to set up, Claude Code or Cursor?
Claude Code, narrowly — it's a single claude mcp add command. Cursor takes one extra step (editing mcp.json) but gives you a visual list of connected tools, which some people prefer.
Can the agent publish content to my site by itself?
Eventually, yes — but make it earn that. The level of autonomy you give is a choice that sits with you/ Start with publishing as a human gate while you check its work. As you feed back corrections and trust builds, you can let it push low-level fixes — a stat refresh, a meta tweak, an added FAQ — live on its own, and keep your review for the bigger structural changes.
Can the agent keep my existing content updated?
That's one of its best uses. Connected to Content Guard, it monitors your live pages for decay and ranking drops, drafts the fix, and — once you trust it — applies the routine ones itself. Content updates are high-value and time-consuming, so it's the work most worth automating.
Is my Frase API key safe in these tools?
It's as safe as you keep it. Store it as an environment variable, never commit it to a repository or paste it into shared docs, and rotate it if it's ever exposed.
What should I ask it to do first?
Start with a read-only request to confirm the connection — "score this URL for GEO" or "who gets cited for [topic]?" Once that returns real data, move up to "build a brief for [keyword]."
About the author
Georgina D'Souza
Marketing Manager
Georgina D'Souza is a Marketing Manager at Frase and Copysmith AI, the company behind Frase.io and Describely.ai. She brings ten years of marketing experience — spanning early-stage startups to multinational enterprise — specializing in content marketing, SEO, and generative engine optimization, helping SaaS brands adapt their content strategies for AI-powered search. Georgina writes about generative engine optimization, AI search visibility, and content marketing for the AI era.
See Frase run on your own content.
Research your market, draft in your voice, and track where you show up across Google and AI search. Start free.
Start free trial7-day free trial. No credit card.