Comparison Updated

Can Cursor do SEO? Rules, agent prompts and MCP servers

Short answer

Cursor can do SEO and GEO work if you give it three things. A project rule in .cursor/rules sets the standing rules: server-rendered text, one title per page, schema only with facts on the page. Prompts with acceptance checks give each job a finish line you can test with curl. An MCP server adds what the editor can’t see: the live site as AI crawlers get it, page briefs and what assistants say. You don’t need to switch tools.

The short answer

Cursor writes the code. It doesn’t know which SEO and GEO jobs matter, and it can’t see your live site the way an AI crawler does unless you make it look. Three layers fix that, and each does a different job:

Layer Where it lives What it does What it can’t do
Rules .cursor/rules/*.mdc or AGENTS.md Standing rules the agent follows in every relevant chat Tell whether a change worked
Prompts with acceptance checks Your chat, or a prompts file in the repo One measurable job, with a command that proves it Choose which jobs matter for your site
MCP server ~/.cursor/mcp.json or .cursor/mcp.json Tools that see outside the repo: live pages, data, assistant answers Edit your code: the agent still does that

Most people start with the second layer, after “optimize SEO” did nothing. Why that prompt fails, and fifteen jobs that work instead, are on I asked Cursor to optimize SEO.

Layer 1: a rule file

Cursor reads project rules from .cursor/rules, and they must be .mdc files. The header takes a description (so the agent can decide when the rule applies), globs (attach it when matching files are in context) and alwaysApply. Cursor recommends keeping rules under 500 lines, and also reads a plain AGENTS.md at the project root (Cursor docs, “Rules”, read 15 Oct 2026).

Example: .cursor/rules/seo.mdc

---
description: SEO and GEO rules for public pages, robots.txt, sitemap and schema
globs: src/pages/**,app/**,public/robots.txt
alwaysApply: false
---
- Read research.md before changing any public page.
- Public pages render their text on the server or at build time. Check with
  curl, never only in the browser.
- One title and one meta description per page, from a single source.
- JSON-LD only with facts visible on the page. Never invent prices,
  ratings or reviews.
- robots.txt never contains "Disallow: /". OAI-SearchBot, ChatGPT-User,
  Claude-SearchBot and PerplexityBot stay allowed.
- App screens behind a login get noindex and stay out of the sitemap.
- After each change, list the files you touched and the command that proves it.

Adjust the globs to your framework’s folders.

Layer 2: prompts with a finish line

A rule says how to work. A prompt says what to do now, and the acceptance check says when it’s done. Three jobs to start with:

Job Accept when
Move the text of public pages into the server HTML curl -s https://yoursite.com/ | sed 's/<[^>]*>/ /g' | wc -w prints hundreds of words, not dozens
Return a real 404 for missing URLs curl -s -o /dev/null -w '%{http_code}' https://yoursite.com/no-such-page prints 404
Build the sitemap from the page list Every <loc> in sitemap.xml returns 200 and is its own canonical

Cursor’s agent can run these commands itself, but run them yourself too before you accept a change. The six one-minute tests for sites built with AI tools are on My vibe-coded site is invisible to ChatGPT.

Layer 3: an MCP server

Cursor reads MCP servers from .cursor/mcp.json in the project or ~/.cursor/mcp.json for every project, and can take keys from your environment with ${env:NAME} (Cursor docs, “MCP”, read 15 Oct 2026). Use the user file for anything with a key, so the key never lands in a commit.

Which server depends on the job. Data servers (DataForSEO, Ahrefs, Search Console) pull numbers; workflow servers audit and tell the agent what to change. We compared seven on SEO MCP servers. Adding Katman looks like this:

{
  "mcpServers": {
    "katman": {
      "command": "npx",
      "args": ["-y", "katman-mcp"],
      "env": { "KATMAN_KEY": "${env:KATMAN_KEY}" }
    }
  }
}

Then ask the agent to call katman_start; it returns the next step. Full setup for every editor: Getting started.

Where Katman fits

Katman MCP fills the third layer and feeds the second. katman_scan_code reads your repo and reports how pages render; katman_audit_site requests the live pages as AI crawlers do, through your CDN; katman_prompt returns fifteen fix prompts (P0 to P14), each with its acceptance check, filled in for your framework; katman_page_brief writes briefs for the pages you’re missing; katman_visibility_run asks ChatGPT, Claude, Gemini, Perplexity and Grok whether they name you, on your own OpenRouter key (about $2.40 a run on the default panel). Katman Pro is $99 a month for up to 3 sites, with fix prompts and page briefs uncapped. Or have us do it: Growth writes 30 pages a month for you. More on the Katman page.

What it can’t do: it doesn’t edit the site by itself (Cursor’s agent does), doesn’t write to WordPress, doesn’t track daily rankings or keyword volumes, and full audits are counted per month. The rule file and the prompts above work without it.

Written by the Katman team, Rnify Limited. Cursor docs read 15 October 2026.

Who this is not for

  • Sites built in a no-code editor with no repo you can open in Cursor.
  • Anyone who wants Cursor to rank a site by itself: no rule, prompt or server can promise rankings.
  • Teams that need keyword volumes and rank tracking: add a data server or an SEO suite for that.

Frequently asked questions

Is Cursor good for SEO?

It’s good at the code side: moving text into server HTML, generating titles, sitemaps and JSON-LD from one source, fixing status codes. It needs you to say what to check and how to prove it, because it has no SEO checklist of its own.

Where do Cursor rules for SEO go?

In .cursor/rules as .mdc files with a short header (description, globs, alwaysApply), or in a plain AGENTS.md at the project root. Cursor’s docs say a .md file inside .cursor/rules is ignored.

Should the SEO rule be set to always apply?

Usually not. Attach it to your public page files with globs, or let the agent pull it in by its description, so it doesn’t crowd every chat about unrelated code.

Which MCP server should I add to Cursor for SEO?

It depends on the job: a data server for keywords and backlinks, a Search Console server for your own clicks, or a workflow server for crawler access, rendering, pages and assistant measurement. Our comparison of seven is on the SEO MCP servers page.

Can Cursor fix a CDN that blocks AI bots?

Usually not from your code. The block is a setting in your CDN’s dashboard or API; Cursor can run the curl test that shows it and tell you which setting to change.

Will this make ChatGPT recommend my site?

Nobody can promise that. These steps make the site readable and quotable; being named also depends on having a page for the customer’s situation and on what others say about you.