SEO MCP server: give your coding agent a real audit engine

Crawlers.fr exposes its crawl and audit engine as a Model Context Protocol server. Claude Code, Claude Desktop and Cursor can call it to audit a URL, receive normalised findings, request a stack-specific fix, apply it, then re-audit to prove the problem is gone.

Claude Code — Crawlers MCP server

Connect the Crawlers.fr MCP server

claude

Connecting to the Crawlers MCP server.

https://crawlers.fr/mcp · Streamable HTTP · OAuth 2.1 — connected: 14 tools, 3 resources

Audit the SEO of /contact.

claude

I’ll use the audit_page tool to analyse the page.

crawlers · mcpaudit_page

{ "url": "https://example.com/contact" }

Results — audit_page

61/100

SEO score

3

Findings

2

Critical

3/3

Fixes available

  • highSEO-CANON-002Missing canonical
  • highSEO-H1-001No h1 in served HTML
  • mediumSEO-META-007Meta description too short

claude

Want me to export these findings, or fix the two critical ones with get_fix?

Fix the critical ones for Next.js.

crawlers · mcpget_fix

{ "finding_ids": ["SEO-CANON-002", "SEO-H1-001"], "framework": "nextjs" }
patch: metadata.alternates.canonical in app/contact/page.tsx
patch: promote section title to h1
files touched: 1

claude

Patches applied. Re-auditing to confirm the findings are gone.

Verification — audit_page (comparison)

61 → 94

SEO score

Resolved

SEO-CANON-002

Resolved

SEO-H1-001

Open

SEO-META-007

Typographic reproduction of a real session: audit, fix, re-audit.

Why agents need a measurement layer

Ask an AI agent to “improve this page for SEO” and it will rewrite text it can see. It cannot see the HTML actually served to crawlers, the HTTP chain, the render behaviour, or whether a generative engine cites you. An MCP audit server closes that gap: the agent stops guessing and starts measuring.

Findings, not opinions

Every issue comes back as a structured unit: rule id, severity, evidence, explanation, and whether a fix exists for your framework. That structure is what makes it actionable by code.

A verifiable loop

Audit, fix, re-audit. The finding id is stable, so its disappearance is the proof. No re-measurement means no proof, only a claim.

Root cause before symptoms

A page whose text only exists after JavaScript execution is reported as a rendering shell, not as thin content. Fixing the wrong layer wastes an entire sprint.

Tools exposed by the server

Tool availability depends on your plan and wallet. Long-running work is asynchronous: the agent starts a job, then reads the result.

  • crawl_site

    Starts an asynchronous crawl of a domain and returns a job id. Poll get_job for progress and results.

  • audit_page

    Audits a single URL: HTTP status, canonical, headings, metadata, structured data, render-shell detection, extracted text.

  • audit_site

    Runs a full technical and generative-visibility audit across a crawled domain.

  • list_findings

    Returns normalised findings with a stable rule id, severity, evidence and whether a fix is available.

  • get_fix

    Returns the correction for a finding, adapted to your stack: plain HTML, WordPress, Next.js or TanStack Start.

  • check_indexability

    Checks robots.txt, meta robots, canonical target and HTTP chain for a given URL.

  • analyze_schema

    Validates JSON-LD against the visible content and reports mismatches, not just syntax errors.

  • analyze_links

    Internal link graph for a page or a site: inbound links, click depth, orphan detection, broken link verdicts.

  • ai_visibility

    Queries the major generative engines on a generated question set and reports observed brand citations.

  • get_job

    Reads the status and payload of any asynchronous job. Free of charge.

Crawlers MCP tools: returned data, execution mode and billing class.
ToolReturnsExecutionBilling
audit_pageHTTP status, canonical, headings, metadata, JSON-LD, extracted text, render-shell verdictSynchronousMetered
audit_siteSite-wide technical and generative-visibility findings, grouped by severityAsynchronousMetered
crawl_siteJob id, then crawled URLs with status and click depthAsynchronousMetered
list_findingsNormalised findings: rule id, severity, evidence, fix availabilitySynchronousFree
get_fixStack-specific patch: HTML, WordPress, Next.js, TanStack StartSynchronousMetered
check_indexabilityrobots.txt, meta robots, canonical target, redirect chainSynchronousMetered
analyze_schemaMismatches between JSON-LD and visible contentSynchronousMetered
analyze_linksInbound links, click depth, orphan pages, broken-link verdictsSynchronousMetered
ai_visibilityObserved brand citations per engine across a generated question setAsynchronousMetered
get_jobStatus and payload of any asynchronous jobSynchronousFree
Crawlers MCP tools: returned data, execution mode and billing class.

Anatomy of a finding

A finding is a stable unit, which is exactly what makes verification possible. Without a stable rule id, re-auditing compares nothing.

Rule id

A code such as SEO-H1-001, invariant across audits. Its disappearance after a patch is the proof the fix worked.

Evidence

The measured value, the excerpt and the URL. A finding with no evidence is never handed to the agent.

Severity and fix availability

Severity reflects expected impact, not rule order. Fix availability lists the stacks a patch exists for, so the agent knows whether it can act.

Sample normalised findings with severity, typical evidence and covered stacks.
Finding idRuleSeverityTypical evidenceCovered stacks
SEO-H1-001Exactly one h1CriticalNo h1 in served HTMLHTML, WordPress, Next.js
SEO-CANON-002Canonical present and consistentCriticalNo canonical tag, duplicate on /?ref=HTML, WordPress, Next.js
SEO-META-007Useful meta descriptionMedium62 characters, below display thresholdHTML, WordPress, Next.js
SEO-RENDER-005Content served without JavaScriptCriticalExtracted text under 200 characters before hydrationNext.js, TanStack Start
GEO-ANSWER-001Citable direct answerCriticalNo standalone 2-4 sentence passageHTML, WordPress, Next.js
Sample normalised findings with severity, typical evidence and covered stacks.

MCP client compatibility

The server implements the Model Context Protocol over Streamable HTTP with OAuth 2.1, so any conformant client can call it.

Compatibility of MCP clients with the Crawlers audit server.
ClientTransportAuthTypical use
Claude CodeStreamable HTTPOAuth 2.1Audit and fix inside the repository
Claude DesktopStreamable HTTPOAuth 2.1Conversational diagnosis
CursorStreamable HTTPOAuth 2.1Audit while editing
Any conformant clientStreamable HTTPOAuth 2.1Custom automation
Compatibility of MCP clients with the Crawlers audit server.

A typical session in Claude Code

The developer asks for an optimisation. The agent orchestrates the loop without further instructions.

  1. audit_page on the route being edited.
  2. list_findings returns a missing canonical, a short description, absent JSON-LD.
  3. get_fix for each finding, scoped to the detected framework.
  4. The agent edits the files in the repository.
  5. audit_page again: the resolved findings are gone, the remaining ones are listed.

Connecting and billing

The server uses Streamable HTTP with OAuth 2.1. You add it to your MCP client, authorise your Crawlers.fr account, and the tools appear in the conversation. Free calls cover reads and job status; billed calls draw on your plan quota and then on your pay-as-you-go wallet, with a daily cap that protects you against runaway agent loops.

Frequently asked questions

What is an SEO MCP server?+

A Model Context Protocol server that exposes SEO measurement as callable tools, so an AI coding agent can audit a page, read structured findings, apply a fix and re-audit to verify the result.

Which clients are supported?+

Any MCP client speaking Streamable HTTP with OAuth 2.1 authentication, including Claude Desktop, Claude Code and Cursor.

How is it billed?+

Reads and job status calls are free. Tools that trigger a crawl or a computation consume your plan quota first, then your pay-as-you-go developer wallet. Every billed call is logged with its cost.

Does the agent change my site?+

No. Crawlers returns findings and proposed corrections. Your agent applies them in your repository or through your connected CMS.

Is generative visibility included?+

Yes. Alongside classic technical SEO, the server measures whether generative engines such as ChatGPT, Gemini, Perplexity and Claude cite your pages.

Why not let the model audit the page itself?+

A language model cannot measure served HTML, HTTP status or render behaviour. Without a crawl it produces plausible guesses instead of verifiable findings.

Sources and references

Related pages

Free audit, no credit card, 90 seconds

Try the audit engine first

Run the same engine your agent will call, on any URL.