technical-seo-mcp
Audit websites for technical and on-page SEO from an AI assistant, and get back actionable reports in Markdown, JSON, or HTML.
seo_full_audit— runs the whole technical checklist on one URL (rendering, HTTPS, page essentials, caching, structured data, sitemap, robots.txt, AI-crawler access) with ✅/⚠️/❌ per check.crawl_audit— crawls up to 100 pages (sitemap-seeded) and aggregates site-wide issues, broken links, redirect chains, duplicate titles/descriptions, and orphan URLs.Technical checks —
check_rendering(JS-shell detection),check_https(SSL + 301 redirect),check_page_essentials(title/meta/h1/canonical/OG/viewport/images),check_caching(Cache-Control, compression, ETag),check_sitemap,check_robots.International & structured data —
check_hreflang(BCP-47 validation, reciprocity withverify_return_links) andcheck_structured_data(JSON-LD/schema.org validation).AI-crawler visibility —
check_ai_crawlersreports per-bot robots.txt status (GPTBot, ClaudeBot, Google-Extended, PerplexityBot, CCBot),/llms.txt, andnoindexin headers and meta tags.On-page & performance —
check_keyword_placement(keyword placement and density),check_url_structure(offline clean-URL rules),run_lighthouse(Core Web Vitals: LCP, CLS, INP; requires Chrome).Workflow features — choose Markdown, machine-readable JSON for CI, or a standalone shareable HTML file; track regressions with
compare_to_baseline.Ask in plain language — e.g. "why isn't this page indexed?" or "can GPTBot crawl my site?" — and chain findings straight into code fixes.
Verifies Google-Extended (Google's AI training crawler) access by analyzing robots.txt and header/meta robots directives as part of the AI-crawler audit.
Runs Google Lighthouse performance and SEO audits on a URL, reporting scores and Core Web Vitals (LCP, CLS, INP) with actionable speed opportunities.
Checks whether PerplexityBot (Perplexity's AI crawler) is allowed to crawl the site, analyzing robots.txt and noindex/nofollow signals.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@technical-seo-mcp Why isn't my homepage ranking for 'SEO tools'?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
technical-seo-mcp
An MCP server that audits websites for technical and on-page SEO — so you can ask your AI assistant "why isn't this page ranking?" and get a specific, actionable answer.
14 tools covering crawlability, HTTPS, Core Web Vitals, sitemaps, robots.txt,
structured data, international SEO (hreflang), keyword placement, and AI-crawler access. Reports come back as
Markdown, JSON for CI, or a standalone HTML file you can open and send to a client.
No API keys. No accounts. Every check runs directly against the live site.
Table of contents
Related MCP server: aeo-mcp
Why this exists
SEO tools tend to give you a dashboard. What you usually want is an answer.
Because this runs as an MCP server, your assistant can chain a diagnosis:
audit the page, notice the h1 is missing, read the actual template file,
and propose the fix — in one conversation. The report is designed for that:
every finding says what is wrong and how to fix it, with paste-ready snippets
where they help.
It is also deliberately small: two runtime dependencies, no database, no telemetry, no signup.
Features
14 focused tools — one full audit, one site crawl, and twelve individual checks you can run in isolation
AI-crawler visibility — per-bot
robots.txtstatus for GPTBot, ClaudeBot, Google-Extended, PerplexityBot, and CCBot, plusllms.txtandnoindexdetection in both theX-Robots-Tagheader and the meta tagSite-wide aggregation —
crawl_auditreports "this problem is on 80% of your pages, fix it once in the template" instead of repeating it per pageThree output formats — Markdown inline, JSON for CI pipelines, or a shareable HTML file
Regression tracking —
compare_to_baselinediffs against your last run and reports new failures, new warnings, and fixed itemsActionable findings — severity-rated ✅/⚠️/❌, each with the concrete fix
Fast — every URL is fetched exactly once per audit and shared across checks
Safe by construction — see Security
Screenshots
HTML report (output: "html") — a standalone file you can open, print, or
send to a client. Sections with findings expand by default; all-clear sections
stay collapsed. All CSS is inlined and nothing is fetched, so it works offline.

Prerequisites
Requirement | Version | Notes |
Node.js | ≥ 20.10 | Uses built-in |
An MCP client | any | See supported clients. |
Google Chrome | any recent | Only for |
Chrome is auto-detected on macOS, Linux, and Windows. Set CHROME_PATH if yours
lives somewhere unusual. Lighthouse itself is fetched on demand via npx on
first use — no install step, but the first run is slower. The version is pinned
(lighthouse@13.5.0), so every run executes the same tested release.
Quick start
Claude Code
claude mcp add technical-seo -- npx -y technical-seo-mcpThen ask: "Run a full technical SEO audit on example.com"
Three similar names, one project — worth knowing before you edit any config:
Name
What it is
technical-seo-mcpthe npm package — what you install
seo-mcpthe command it installs (
technical-seo-mcpalso works)
technical-seothe server name your client shows; you choose this in the config
Only the package name is fixed. Name the server whatever you like —
seo,audit, anything — by changing the label in your client config.
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"technical-seo": {
"command": "npx",
"args": ["-y", "technical-seo-mcp"]
}
}
}Config file locations:
macOS —
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows —
%APPDATA%\Claude\claude_desktop_config.jsonLinux —
~/.config/Claude/claude_desktop_config.json
Restart Claude Desktop after editing.
Cursor / Windsurf / other clients
Any client that speaks MCP over stdio works with the same command:
{
"mcpServers": {
"technical-seo": {
"command": "npx",
"args": ["-y", "technical-seo-mcp"]
}
}
}Global install
If you prefer a pinned binary over npx resolution:
npm install -g technical-seo-mcp
seo-mcp --versionThen use "command": "seo-mcp" with no args in your client config.
From source
git clone https://github.com/sourav2024/seo-mcp
cd seo-mcp
npm install
npm run verify # lint + tests + MCP protocol smoke test
claude mcp add technical-seo -- node "$PWD/server.js"Verify the setup
Two things are worth checking separately, because they fail for different reasons.
1. Does the server itself run? This rules out Node version and install problems:
npx -y technical-seo-mcp --version # prints e.g. 1.0.02. Did your client actually connect? A server that runs fine can still fail to register — usually a typo in the config JSON or a config file that wasn't reloaded.
Claude Code — run
/mcp. You should seetechnical-seolisted as connected.Claude Desktop — the tools appear under the 🔨 icon in the message box. Restart the app after editing the config; it does not reload on its own.
Any client — ask "What technical SEO tools do you have?" The assistant should list
seo_full_audit,crawl_audit, and the twelvecheck_*tools.
3. Run your first audit. This confirms the whole path works end to end:
"Run a full technical SEO audit on example.com"
You should get a report with ✅/⚠️/❌ per check. If any step fails, see Troubleshooting.
There is no build step — the project is plain ESM and runs directly on Node 20+.
Supported MCP clients
Client | Status | Notes |
Claude Code | ✅ Tested |
|
Claude Desktop | ✅ Tested | Via |
Cursor | — Untested | Standard stdio MCP config |
Windsurf | — Untested | Standard stdio MCP config |
Zed | — Untested | Standard stdio MCP config |
Continue.dev | — Untested | Standard stdio MCP config |
Custom (MCP SDK) | ✅ | Anything speaking MCP over stdio |
"Untested" means the server follows the stdio MCP spec and should work, but no maintainer has verified it. If you use one of these, a confirmation (or a bug report) is welcome.
Protocol support
stdio transport (no HTTP — see Security)
Accurate tool annotations: the single checks are
readOnlyHint; the two report tools (seo_full_audit,crawl_audit) can write an HTML file and a baseline, so they arereadOnlyHint: false, destructiveHint: false. None of them ever modifies the audited siteTool failures return
isError: trueresults rather than protocol errors, so the model can read and react to themProgress notifications for long operations: pass a
progressTokenandcrawl_audit,seo_full_audit, andrun_lighthousereport as they goCancellation: cancelling a request stops the crawl between pages and terminates a running Lighthouse process
structuredContentonoutput: "json", so a client can consume the result object without re-parsing a string
Tools
Site-level audits
Tool | Checks |
| Everything below on one URL, in one report with ✅/⚠️/❌ per item (except Lighthouse). Supports |
| Crawls up to |
Technical SEO
Tool | Checks |
| Fetches the page without JavaScript and detects client-side JS shells that Google/AI crawlers struggle to read — recommends SSR/SSG when needed |
| Valid SSL certificate on |
| Clean-URL rules: ≤ ~60 chars, lowercase, hyphens not underscores, no accents, no messy query params, shallow hierarchy. Offline — makes no requests |
|
|
|
|
| Finds the sitemap like a search engine does (robots.txt |
|
|
| International SEO. Validates BCP-47 hreflang values (catching |
| Extracts schema.org JSON-LD (tolerates arrays and |
| Effective allow/block status per bot — GPTBot, ClaudeBot, Google-Extended, PerplexityBot, CCBot — and the |
| Lighthouse performance + SEO scores and Core Web Vitals: LCP (≤ 2.5 s), CLS (≤ 0.1), INP (≤ 200 ms — falls back to TBT when a lab run can't simulate interactions), plus top speed opportunities. Mobile by default. Slow (~1–2 min); requires Chrome |
On-page SEO
Tool | Checks |
| Where target keywords appear: |
Not covered, by design
Keyword research — search volume and difficulty need external paid data (Ahrefs, Semrush, Google Keyword Planner)
Backlinks / off-page SEO — requires a crawled link index
Rendered-page visual checks — pair with Playwright MCP for screenshots and JS-rendered inspection
Usage examples
Ask in plain language; the client picks the tool.
You say | Tool used |
"Run a full technical SEO audit on example.com" |
|
"Crawl example.com and find site-wide SEO issues" |
|
"Audit example.com and give me an HTML report I can send to a client" |
|
"Can GPTBot and ClaudeBot crawl my site?" |
|
"Is my LCP under 2.5 seconds on mobile?" |
|
"Check keyword placement for 'freight broker software' on example.com" |
|
"Validate my JSON-LD" |
|
"I target the US and Canada — is my hreflang set up right?" |
|
"Do my hreflang alternates all link back to each other?" |
|
"Re-audit and tell me what changed since last time" |
|
"Why isn't this page indexed?" |
|
A useful pattern: audit, then fix
Because the assistant has both the audit and your codebase, you can go straight from finding to patch:
"Audit localhost:3000, then fix everything you found in the Next.js layout."
CI integration
output: "json" gives you machine-readable results:
{
"target": "https://example.com",
"generated_at": "2026-07-27T10:00:00.000Z",
"counts": { "pass": 18, "warn": 4, "fail": 2 },
"sections": [{ "section": "Page essentials", "checks": [{ "severity": "fail", "text": "..." }] }]
}Fail a build when counts.fail > 0, or use compare_to_baseline to fail only on
new regressions:
SEO_MCP_STATE_DIR=./.seo-baselines # commit these to track over timeOutput formats
seo_full_audit and crawl_audit accept:
output: "markdown"(default) — the report inline, ✅/⚠️/❌ per check.output: "json"— structured per-check severity plus{pass, warn, fail}counts, ready for CI or a dashboard.output: "html"— writes a standalone HTML file and returns its path plus a one-line summary. The markup never goes through the MCP transport, so it costs no context. Sections with findings expand, all-clear sections collapse, and fix snippets render as copyable code blocks. All CSS is inlined and nothing is fetched, so it works offline, overfile://, and as an email attachment. Light/dark aware and print-friendly.output_path— a destination file or directory. Defaults to./seo-report-<host>-<date>.html(seo-crawl-…for crawls).
compare_to_baseline: true— prepends a diff: new failures, new warnings, and fixed items since the last run. The first run saves a baseline.
Baselines are stored per target, one file each, under your OS state directory
(~/Library/Application Support/seo-mcp on macOS, $XDG_STATE_HOME/seo-mcp or
~/.local/state/seo-mcp on Linux, %LOCALAPPDATA%\seo-mcp on Windows) — never
inside the package, which is read-only under npx. Override with
SEO_MCP_STATE_DIR.
Configuration
Every setting is an optional environment variable with a safe default.
Invalid values fall back to the default and log a warning rather than crashing.
See .env.example for the fully commented list.
This server does not read .env files — MCP servers are launched by a client, so
set variables in the client config:
{
"mcpServers": {
"technical-seo": {
"command": "npx",
"args": ["-y", "technical-seo-mcp"],
"env": {
"SEO_MCP_LOG_LEVEL": "debug",
"SEO_MCP_CRAWL_DELAY_MS": "1000"
}
}
}
}Variable | Default | Purpose |
|
|
|
|
|
|
|
| Per-request timeout (1000–120000) |
|
| Timeout for HTTPS/redirect probes |
|
| Cap on bytes read per response (64 KB–256 MB) |
|
| Redirect hops before giving up (1–20) |
|
| Politeness delay between crawled pages (0–60000) |
|
| Hard ceiling on |
|
| Parallel page fetches during a crawl (1–8). Raise only for sites you own |
|
| Lighthouse run timeout (30000–600000) |
|
| Exact Lighthouse version run via |
| OS default | Where baselines are stored |
|
| Allow auditing localhost / private IPs — see Security |
| auto | Chrome binary for Lighthouse |
There are no secrets or API keys. Nothing is ever logged that could carry a credential: URL userinfo and credential-bearing query parameters are stripped from log output, and sensitive field names are redacted.
Architecture
server.js MCP tool registration only — no audit logic
src/
config.js All tunables; validated env vars with safe defaults
logger.js Structured stderr logging with redaction
url-guard.js URL validation and SSRF / private-host checks
tool-result.js MCP result shapes and error-message mapping
version.js Version and identity constants
checks/
index.js Registry — re-exports every check
helpers.js Shared fetch, redirect walking, stemming, report parsing
rendering.js JS-shell detection
https.js SSL + http→https redirect classification
urls.js Clean-URL rules
page-essentials.js Title/meta/h1/canonical/OG/viewport/images
caching.js Cache-Control, compression, ETag, size
sitemap.js Sitemap validation, URL sampling, collection
robots.js robots.txt validation
keywords.js Keyword placement + density
structured-data.js JSON-LD / schema.org validation
ai-crawlers.js Per-bot robots status, llms.txt, noindex detection
lighthouse.js Core Web Vitals via npx lighthouse + Chrome detection
crawl.js Multi-page crawl + aggregation
report.js markdown/JSON/HTML output + baseline diffing
html-report.js Standalone HTML renderer (inlined CSS, no subresources)
test/ node:test suites (fixtures, output, guards, logging, config)
scripts/smoke.js End-to-end MCP wire-protocol checkThree design decisions worth knowing:
server.jsholds no audit logic;checks/never touches MCP. That boundary is what makes every check directly unit-testable without a client.Every URL is fetched exactly once per audit. Checks accept an optional prefetched
pageand a shared resource cache, so a full audit makes 5 requests — the page,robots.txt,sitemap.xml,llms.txt, and onehttp://redirect probe — instead of re-requesting the page for each of the five checks that need it.Failures are contained.
Promise.allSettledmeans an unreachable sitemap degrades to one ❌ line instead of losing the whole report, and every tool handler is wrapped so nothing can escape into the transport.Crawl workers share one queue. Raising
SEO_MCP_CRAWL_CONCURRENCYadds workers that pull from the same queue, so link discovery still reaches pages found by other workers and no URL is fetched twice.
Troubleshooting & FAQ
Common problems — connection failures, missing Chrome, timeouts, permission errors — and answers to recurring questions are in docs/troubleshooting.md.
The fastest first step for almost any issue is debug logging:
{ "env": { "SEO_MCP_LOG_LEVEL": "debug", "SEO_MCP_LOG_FORMAT": "text" } }All logs go to stderr — stdout carries the MCP protocol.
Roadmap
Not commitments — ideas, roughly in priority order. Feedback welcome.
Next
check_images— deeper image audit (dimensions, formats,srcset, alt quality)Core Web Vitals from real field data (CrUX API) alongside lab numbers
Internal-link graph analysis: orphan pages, click depth, anchor-text distribution
Later
Full DNS-rebinding protection (pin the resolved address for the connection)
Configurable crawl concurrency with per-host rate limiting
MCP resources for browsing saved baselines
MCP prompts for common workflows ("pre-launch checklist", "fix my Core Web Vitals")
Optional JS rendering behind a flag, for SPA-heavy sites
Under consideration
A GitHub Action wrapping the JSON output for PR comments
Competitor comparison (audit N URLs side by side)
Contributing
Contributions are welcome — especially new checks and false-positive fixes. Start with CONTRIBUTING.md, which covers the layout, how to add a check, and what makes a good one.
git clone https://github.com/sourav2024/seo-mcp
cd seo-mcp
npm install
npm run verify # lint + tests + MCP smoke testBy participating you agree to the Code of Conduct.
Security
This server is designed to run locally over stdio, where the URLs it fetches come from you. It defends against hostile content from audited sites: URL scheme validation, per-hop redirect re-validation, HTML escaping in reports, prototype-pollution-safe parsing, body-size caps, and no-shell subprocess spawning.
Two things to know:
Auditing private hosts works by default (
localhost,10.x,192.168.x). That's intentional and useful locally.If you expose this to input you don't control, set
SEO_MCP_ALLOW_PRIVATE_HOSTS=false. That enables SSRF protection, blocking private, loopback, and link-local targets — including the169.254.169.254cloud-metadata address — re-checking every redirect hop and the addresses each hostname resolves to.
Full threat model, known limitations, and a hardening checklist: SECURITY.md.
Found a vulnerability? Report it privately — please don't open a public issue.
Support this project
This is free and MIT-licensed, and it stays that way. If it saved you an afternoon of SEO debugging, you can sponsor the work on GitHub.
Things that help just as much and cost nothing: starring the repo, filing a good bug report, or telling me which check produced a false positive on your site.
License
MIT © sourav2024
Acknowledgements
Model Context Protocol and the TypeScript SDK, by Anthropic
Google Lighthouse for Core Web Vitals measurement
Zod for input schema validation
Google's Search Central documentation and the schema.org vocabulary, which define what most of these checks are checking against
Available Tools
14 toolscheck_ai_crawlersCheck AI crawler access & indexabilityARead-only
Report the effective robots.txt allow/block status for GPTBot, ClaudeBot, Google-Extended, PerplexityBot, CCBot, and the * default (flagging blanket Disallow: / without per-bot overrides). Checks for /llms.txt, and flags noindex/nofollow in both the X-Robots-Tag response header and — critical failures invisible to a plain robots.txt check.
Inputs: url (required).
check_cachingCheck caching & delivery headersARead-only
Inspect Cache-Control, content-encoding (gzip/brotli), ETag/Last-Modified headers and HTML document size for easy speed wins.
Inputs: url (required).
check_hreflangCheck hreflang / international SEOARead-only
Audit a page's hreflang annotations for multi-language or multi-country targeting (e.g. US + Canada): validates BCP-47 values (catching en_US, en-UK and other common mistakes), requires a self-referencing annotation, checks for x-default, flags duplicate/conflicting values and relative hrefs, and verifies agrees. With verify_return_links: true it fetches each alternate and confirms it links back — missing return links are the most common reason Google ignores an otherwise-correct hreflang cluster. A single-language site correctly reports that hreflang is not needed.
Inputs: url (required), max_alternates, verify_return_links.
check_httpsCheck HTTPS / SSLARead-only
Verify the site serves https:// with a valid certificate and that http:// permanently (301) redirects to https://.
Inputs: url (required).
check_keyword_placementCheck on-page keyword placementARead-only
Analyze where target keywords appear on a page: (and whether it's front-loaded), URL path, meta description, H1, H2 subheadings, first ~100 words, image alt text, and keyword density (flags both thin usage and stuffing). Matching is plural/stem-tolerant ('freight broker' matches 'freight brokers'). Pass keywords as an array (one report section per keyword); a single keyword string is also accepted. Returns ✅/⚠️/❌ per placement.
Inputs: url (required), keyword, keywords.
check_page_essentialsCheck on-page essentialsARead-only
Check a page's title, meta description, single h1, canonical tag, Open Graph tags, responsive viewport meta (mobile-first), image lazy-loading, WebP/AVIF usage, and explicit image width/height (CLS risk).
Inputs: url (required).
check_renderingCheck server-rendered HTMLARead-only
Fetch a page without executing JavaScript and detect whether it serves real server-rendered HTML or an empty client-side JS shell (hard for Google/AI to interpret).
Inputs: url (required).
check_robotsCheck robots.txtARead-only
Fetch /robots.txt, verify it exists and is valid (not an HTML page or redirect), references the sitemap, and does not block the entire site.
Inputs: url (required).
check_sitemapCheck sitemap.xmlARead-only
Find the site's sitemap the way search engines do (robots.txt Sitemap: lines, then /sitemap.xml, then sitemap-index.xml / sitemap_index.xml / wp-sitemap.xml), count entries, flag admin/cart/checkout/internal-search URLs, sample up to 10 URLs (from the first child sitemap for an index) to verify they return 200 without redirects, and check lastmod presence/freshness.
Inputs: url (required).
check_structured_dataCheck structured data (JSON-LD)ARead-only
Extract and validate schema.org JSON-LD on a page (tolerates arrays and @graph). Checks Organization (incl. sameAs links), SoftwareApplication (name/description/applicationCategory/offers), FAQPage (Question/acceptedAnswer structure), and BreadcrumbList. Flags malformed JSON-LD blocks and provides a ready-to-paste Organization example when none exists.
Inputs: url (required).
check_url_structureCheck clean-URL rulesARead-only
Analyze one or more URLs against clean-URL best practices: ≤ ~60 chars, lowercase, hyphens not underscores, no accents/special chars, no messy query params, shallow hierarchy. Offline — no requests are made.
Inputs: urls (required).
crawl_auditCrawl and audit multiple pagesA
Crawl a site (seeded from sitemap.xml, sitemap-index aware; falls back to following internal links) and audit up to max_pages pages with a polite delay. Each page is fetched once and shared across checks. Aggregates: site-wide issues (same problem on >50% of pages — fix once in the template), broken internal links (404s), multi-hop redirect chains, duplicate titles/meta descriptions, orphan sitemap URLs, and remaining per-page issues.
Inputs: url (required), output, max_pages, output_path, +1 more.
run_lighthouseRun Lighthouse (Core Web Vitals)ARead-only
Run Google Lighthouse (performance + SEO categories) on a URL via npx. Reports scores and Core Web Vitals — LCP (≤ 2.5s), CLS (≤ 0.1), and INP (≤ 200ms; falls back to TBT when the lab run can't measure interactions) — plus top speed opportunities. Slow (~1-2 min); requires Chrome installed.
Inputs: url (required), form_factor.
seo_full_auditFull technical SEO auditA
Run the full technical SEO checklist on a URL: rendering (server-rendered vs JS shell), HTTPS/SSL + redirect, page essentials (title, meta description, h1, canonical, Open Graph, mobile viewport, image lazy-loading/WebP/dimensions), caching headers, structured data (JSON-LD), sitemap.xml, robots.txt, and AI-crawler access. Returns a Markdown report with ✅/⚠️/❌ per check (or structured JSON with output: 'json', or a shareable HTML file with output: 'html'). Set compare_to_baseline: true to diff against the previous run. Does not include Lighthouse (use run_lighthouse separately — it is slower).
Inputs: url (required), output, output_path, compare_to_baseline.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 14 tools
The aggregate tools (seo_full_audit, crawl_audit) clearly overlap in scope with the individual check_* tools, but descriptions explicitly state that full_audit excludes Lighthouse and that crawl_audit reuses a shared fetch, so the granular/aggregate boundary is legible. check_robots vs check_ai_crawlers could be confused, yet the description clarifies the latter covers meta/X-Robots-Tag and per-bot status. Only these mild overlaps prevent a 5.
Nearly all tools follow a snake_case verb_noun pattern (check_*, crawl_audit, run_lighthouse, seo_full_audit). 'check_' dominates uniformly, but the mixed prefixes (check_/crawl_/run_/seo_) and the irregular 'seo_full_audit' are minor deviations from a single convention.
14 tools sit squarely in the well-scoped 3-15 range. Each tool maps to a distinct technical SEO subsystem (robots, sitemap, hreflang, structured data, rendering, caching, etc.), so none feel redundant filler.
Coverage is broad: rendering, HTTPS/redirects, page essentials, caching, structured data, sitemap, robots/AI crawlers, hreflang, URL structure, keyword placement, Lighthouse, and a site crawl. Minor gaps remain (no field/CrUX data, backlink or log-file analysis), but core technical SEO workflows have no dead ends.
Maintenance
Related MCP Connectors
SEO MCP server for keyword research, live SERPs, backlinks, site audits and AI visibility.
SEO MCP server for keyword research, SERP analysis, audits, and Search Console workflows.
SEO MCP server — backlinks, domain authority, tech stack, and 18+ tools via Common Crawl.
One MCP for all your SEO: rankings, AI search, fixes & reports. Fixed in code, proven in numbers.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA production-ready remote MCP server that performs comprehensive SEO audits, providing structured insights on on-page SEO, technical health, and social metadata without requiring local setup.29-
- AlicenseAqualityCmaintenanceAn MCP server that gives AI agents tools to inspect a website's visibility to AI answer engines, including crawler permissions, llms.txt, structured data, on-page signals, and a full 29-check AI-readiness audit.555 npmMIT
- AlicenseAqualityDmaintenanceAn MCP server that provides a suite of SEO analysis tools for auditing meta tags, headings, links, keyword density, page speed, and sitemaps without requiring external API keys.644 npm1MIT
- AlicenseAqualityDmaintenanceAn MCP server that audits websites for accessibility (WCAG 2.1 AA/EAA), performance, SEO, design quality, and mobile responsiveness, providing actionable scores, grades, and prioritized fixes.6MIT