SEO Audit in Cursor
SEO and local AI readiness. The MCP server is https://seoaudit.openkrill.app/mcp. No key. The steps below are only for Cursor. A call to audit_page was checked against that server on 2026-10-01.
What this server answers
Audit a website for technical and on-page SEO problems. Ask "audit example.com", "what SEO problems does https://example.com/docs have?" or "which pages on my site have missing titles or duplicate descriptions?".
audit_site reads the homepage, the sitemap and the pages they link to (up to 25 pages), respecting robots.txt, and returns the rules that failed grouped by priority, each with the affected pages, the fix and the link to the documentation the rule comes from. It covers robots.txt and sitemap problems, broken links and redirect chains, noindex, nofollow and canonical issues, crawlable links and URL tidiness, titles, descriptions, headings, thin and duplicate content, image alt text, structured data and review markup, share tags, language and hreflang, mixed content and page weight. For sites with many similar pages (a page per city or product) it compares the pages it read: groups of near-identical pages, pages with little text of their own once the shared template wording is removed, hreflang links the other page does not return or sets without x-default, and sitemap pages that no page links to. For local businesses it checks LocalBusiness markup (name, address, telephone, opening hours, map or coordinates), whether those details match what the page shows, and whether each location has its own page. audit_page applies the page rules to one address.
local_ai_readiness checks whether that same site is ready to be named in AI search. It reads only the business's own public pages and returns pass, warn or fail for a page per service, location or service-area pages, visible prices, an FAQ, LocalBusiness schema (name, address, phone, hours, geo, sameAs), consistent name address and phone, on-site proof, a clear one-line description and recent dated content. Each check names the page it was seen on and a concrete fix. It adds what Gemini (first-party site, 41.9%), OpenAI (directories, 40.9%) and Anthropic (reviews, 20.5%) leaned on in a Yext study of 492,000 local queries, as of 2026-10-01, plus advice about claimed profiles, cover photos and attributes. It does not query those engines and does not fetch directories or review sites. It is limited per day and per network.
check_ai_instructions reports whether a public site publishes /llms.txt and /llms-full.txt, an AI page, home-page links, and whether the file matches the site's own name, products and facts. generate_ai_instructions drafts an llms.txt from those pages for the owner to review and does not publish it. Both cite https://x.com/chris_nectiv/status/2105655128162468334 (2026-10-01) as the reason they exist. They do not query AI engines and do not promise an effect on AI Overviews.
The rules follow Google Search Central documentation; the catalog is adapted from the MIT-licensed jev-seo project, and rules that are conventions rather than requirements are marked as heuristics. Optionally, a judgement step (off unless requested) reads the pages' text with a language model service to say what each page is for, how specific it is, and which pages compete for the same searches. It is limited per day and per network, and when it is unavailable the rule results are returned with a note. local_ai_readiness does not use that step.
Only the site you name is crawled: public websites on the standard ports, robots.txt respected, a small number of requests at a time, with a User-Agent that names Agent Tools. Private, local and internal addresses and redirects into them are refused. It does not run JavaScript, does not measure rankings, traffic or backlinks, and does not test whether a firewall blocks crawlers.
It stores nothing about you or the site: pages are read, turned into findings and dropped. Answers are cached for ten minutes. The only lasting records are a daily count of calls, daily totals for the optional judgement step, and daily totals for local AI-readiness checks (a day count, plus a count per coarse daily hash of the network, deleted after a few days).
What it can do
- Audits up to 25 pages of a site from its homepage and sitemap, with robots.txt respected
- Returns failed rules grouped by priority with the affected pages, the fix and the documentation link
- Checks titles, descriptions, headings, canonicals, noindex, structured data, share tags and image alt text
- Finds broken links, redirect chains, sitemap problems, thin and duplicate content
- Checks local business markup: name, address, phone, hours, map, and that the details match the page
- Compares pages: near-identical templated pages, little own text, hreflang returns, sitemap pages nothing links to
- Audits one page with the full page rule set
- Optional judgement of page purpose and competing pages, limited per day
- Checks local AI-search readiness: services, locations, prices, FAQ, schema, NAP, proof
- Checks llms.txt, llms-full.txt, an AI page, home links, and name, product and fact consistency
- Drafts an llms.txt from the site's own public pages for the owner to review
Tools
audit_site, Audit a site for SEO problems. Use this to audit a whole site or several pages for SEO; it finds the pages itself. It fits requests such as "audit example.com", "what SEO problems does my site have?", "which pages are worst?", "take a quick look at a few pages of this site" or "my site has a page per city, are they too similar?", so never guess page addresses for those. Pass the domain and optionally max_pages (1 to 25, default 10). Reads the homepage, the sitemap and linked pages of that site only, respecting robots.txt, and returns the rules that failed grouped by priority (high, medium, low), each with the affected pages, the fix and the documentation link. It also compares the pages it read: near-identical templated pages, pages with little text of their own, hreflang links that are not returned or lack x-default, and sitemap pages nothing links to. Leave judge off unless the user asks what pages are for or which compete. It reads a sample of pages, does not run JavaScript, and does not measure rankings, traffic or backlinks. Do not use it for private or local addresses or to collect a site's content.audit_page, Audit one page for SEO problems. Use this only for a single page address the user gave. It fits requests such as "what SEO problems does https://example.com/docs have?" or "is the title and description of this page OK?". Pass the page address. For several pages or a whole site call audit_site once instead of this tool many times. Returns the page rules that failed grouped by priority, each with the fix and the documentation link, plus the title, description, headings and other facts that were read. robots.txt is respected. Rules that compare pages or read the sitemap need audit_site. Do not use it for private or local addresses, for rankings or traffic, or to read a page's text.local_ai_readiness, Local AI-search readiness. Local-business readiness for AI search answers. Use this when the user asks if a local business site is ready to be named by AI search, ChatGPT, Gemini or similar, or what to fix so assistants can cite it. Pass the business's own site. Crawls only that site's public pages (robots.txt respected, up to 25, default 15) and returns pass, warn or fail for a page per service, location or service-area pages, visible prices, FAQ, LocalBusiness schema (name, address, phone, hours, geo, sameAs), NAP consistency, on-site proof, a one-line description and recent dated content. Each check has the evidence URL and a fix. Also returns what Gemini, OpenAI and Anthropic leaned on in a Yext study (as of 2026-10-01) and advice about claimed profiles and cover photos, which are not fetched. It does not query AI engines, directories or review sites, and it does not measure rankings. Do not use it for private addresses or to collect contact details.check_ai_instructions, Check AI instructions. Checks the site's AI instructions files and page. Use this when the user asks whether a site publishes llms.txt, llms-full.txt or an AI instructions page, whether the home page links to them, and whether the file matches the site's own name, products and facts. Pass the domain. Returns pass, warn or fail for each part, with the evidence URL and a fix, plus the date the pages were read. A public post is cited as the reason the check exists. It does not promise an effect on AI Overviews and does not query AI engines. Public pages only. Do not use it for private addresses or to collect contact details.generate_ai_instructions, Draft an llms.txt. Drafts an llms.txt from the site's own public pages. Use this when the owner wants a draft AI instructions file to review. Pass the domain. Returns markdown for the owner to edit and publish themselves. Nothing is written to the site. A public post is cited as the reason the draft exists. It does not promise an effect on AI Overviews and does not query AI engines. Do not use it for private addresses or to collect contact details.
Add SEO Audit in Cursor
Cursor reads MCP servers from mcp.json. A project file at .cursor/mcp.json applies to that project. A user file at ~/.cursor/mcp.json applies everywhere. These steps were checked against the Cursor MCP docs on 2026-10-01. Streamable HTTP is the transport: a url, not a shell command.
Create or edit the file so it contains this server. Merge it with servers you already have. Do not replace the whole file if other servers are listed.
{
"mcpServers": {
"seo-audit": {
"url": "https://seoaudit.openkrill.app/mcp"
}
}
}
No headers and no auth block. Those are for servers that require a token or a pre-registered OAuth client. SEO Audit answers without either. Saving the file is the install. Open Cursor Settings, then MCP, and confirm SEO Audit is enabled. If it stays disconnected, reload the window. You should see audit_site, audit_page, local_ai_readiness, check_ai_instructions, generate_ai_instructions.
In Agent chat, ask: Audit example.com for SEO problems Cursor calls the tool over streamable HTTP and shows the arguments before it runs them, depending on your run mode. Approve the call the first time and read the result. The server is public and read-only. It does not see your repository unless the model puts repository text into the arguments, so do not paste secrets into the question.
A one-click Marketplace install does not exist for this server. The JSON above is the whole setup. Team admins can distribute the same url through a team marketplace, but that is an admin step, not something this page can do for you. OAuth redirect URLs in the Cursor docs matter only for servers that require sign-in. Skip them here.
A call checked on 2026-10-01
example.com is one public page. Judgement stays off, so no page text is sent to a language model. The request below was posted to https://seoaudit.openkrill.app/mcp as tools/call. HTTP 200. Source: the SEO Audit server, read 2026-10-01.
{
"method": "tools/call",
"params": {
"name": "audit_page",
"arguments": {
"url": "https://example.com",
"judge": false
}
}
}
- status. 200
- notice. This is what the site served to a request from Agent Tools servers right now, read with robots.txt respected and without running JavaScript. The rules follow Google Search Central documentation and common conventions; ru
- url. https://example.com/
- finalUrl. https://example.com/
Repeat the call yourself if you need a newer reading. Cached answers expire. A rate limit is not a result: wait and try again. Nothing in the call is a ranking, a filing, or advice.