mcp-seo-auditor
MCP SEO Auditor
Free on-page SEO audits from Claude Code or Cursor — find broken titles, missing meta descriptions, canonical issues, robots conflicts, and JSON-LD errors before your pages go live. Fully local, no API keys.
Part of the petrovicistefan MCP suite — local-first guardrails for AI coding agents.
Quick Install
Requirements: Python 3.11+ and Node.js 18+
Cursor
Or use the deeplink directly:
cursor://anysphere.cursor-deeplink/mcp/install?name=mcp-seo-auditor&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIm1jcC1zZW8tYXVkaXRvciJdfQo=Or add manually to ~/.cursor/mcp.json:
{
"mcpServers": {
"mcp-seo-auditor": {
"command": "npx",
"args": ["-y", "mcp-seo-auditor"]
}
}
}Claude Code
claude mcp add mcp-seo-auditor -- npx -y mcp-seo-auditorIf this server is on Claude MCP Marketplace:
/plugin marketplace add petrovicistefan/mcp-marketplaceClaude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"mcp-seo-auditor": {
"command": "npx",
"args": ["-y", "mcp-seo-auditor"]
}
}
}VS Code
Use the MCP install link, or add to .vscode/mcp.json:
{
"servers": {
"mcp-seo-auditor": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-seo-auditor"]
}
}
}npx (any MCP client)
npx -y mcp-seo-auditoruvx (PyPI, coming soon)
uvx mcp-seo-auditorPyPI package not yet published. See PyPI Publishing below.
Codex CLI
codex mcp add mcp-seo-auditor -- npx -y mcp-seo-auditorWindsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"mcp-seo-auditor": {
"command": "npx",
"args": ["-y", "mcp-seo-auditor"]
}
}
}Zed
Add to settings.json:
{
"context_servers": {
"mcp-seo-auditor": {
"command": "npx",
"args": ["-y", "mcp-seo-auditor"]
}
}
}Gemini CLI
Add to ~/.gemini/settings.json:
{
"mcpServers": {
"mcp-seo-auditor": {
"command": "npx",
"args": ["-y", "mcp-seo-auditor"]
}
}
}⭐ Found this useful? Star this repository to help others discover it!
Related MCP server: librecrawl-technical-seo-audit-mcp
Why MCP SEO Auditor?
Catch SEO issues before you deploy by asking your AI coding assistant to audit your HTML:
"Audit this page before I push it" — find missing titles, broken meta descriptions, or canonical conflicts
"Crawl example.com and check for duplicate titles" — spot content duplication across your site
"What SEO issues does this HTML have?" — get actionable recommendations with severity levels
Unlike hosted SEO tools that require API keys, cloud accounts, and monthly fees, MCP SEO Auditor runs entirely on your machine. No data leaves your computer unless you explicitly crawl a public URL.
Tools
MCP SEO Auditor exposes 3 MCP tools your AI agent can call:
Tool | Description | Inputs | Network |
| Audit supplied static HTML without network access. Returns evidence and prioritized recommendations. |
| ❌ No |
| Fetch a public page and audit static SEO. Respects robots.txt; blocks private addresses. |
| ✅ Yes |
| Crawl up to 10 pages on the exact same origin, respecting robots.txt. Detect duplicate titles and descriptions. |
| ✅ Yes |
What Gets Checked
Each audit scans for:
Title: presence, length (50–60 chars recommended), uniqueness
Meta description: presence, length (150–160 chars recommended), uniqueness
H1 headings: presence, count (multiple H1s flagged as informational)
Canonical URL: presence, validity, self-referencing vs cross-domain
Robots directives:
<meta name="robots">conflicts (e.g.,noindex+ canonical)Language declaration:
<html lang="...">presenceViewport: mobile-friendly
<meta name="viewport">tagImage alt attributes: presence check (empty alt is valid for decorative images)
JSON-LD structured data: JSON syntax validation
Internal/external link inventory: counts for context
Output: Findings with severity (error, warning, info), issue codes, evidence snippets, and actionable recommendations. Plus a local checklist score (not a ranking forecast).
Use Cases
Individual Developers
"Audit the homepage HTML in index.html and prioritize the fixes."
"Check https://staging.example.com for SEO issues before I merge this PR."
"Does this landing page have a proper canonical tag?"Before Deployment
"Audit all HTML files in dist/ and list any errors."
"Crawl the staging site and find duplicate meta descriptions."Content Review
"What's the title and description for this blog post HTML?"
"Does this page have structured data errors?"Site Audits
"Crawl 10 pages starting at https://example.com and report duplicate titles."
"Which pages are missing H1 tags?"Comparison with Alternatives
How does MCP SEO Auditor compare to other SEO tools for AI agents?
Feature | MCP SEO Auditor | |||
On-page HTML audits | ✅ Local, no setup | ❌ Hosted connector required | ❌ GSC-focused, no static audits | ✅ Crawl + audits (local) |
Google Search Console | ❌ Not integrated | ✅ Via hosted Ryze MCP | ✅ OAuth/service account required | ✅ OAuth setup |
Google Analytics | ❌ Not integrated | ✅ GA4 via hosted MCP | ❌ Not included | ✅ CLI + local MCP |
Keyword research | ❌ Not included | ✅ DataForSEO built-in | ❌ Not included | ✅ DataForSEO/Ahrefs key |
Setup complexity | ✅ | ⚠️ Hosted sign-in + approval | ⚠️ Google Cloud OAuth | ⚠️ OAuth + optional API keys |
Cost | ✅ Free, local | ⚠️ Free tier, then paid | ✅ Free (your Google API costs) | ✅ Free (your API costs) |
Network required | ❌ Not for | ✅ Yes (hosted) | ✅ Yes (GSC API) | ✅ Yes (GSC/GA APIs) |
Privacy | ✅ Fully local option | ⚠️ Sends requests to Ryze | ⚠️ Google Cloud credentials | ⚠️ Hosted option available |
When to use MCP SEO Auditor: You want instant, zero-setup on-page audits of local HTML files or staging sites without external API dependencies.
When to use alternatives: You need live Google Search Console data, rank tracking, backlink analysis, or keyword research — those tools excel at connecting your agent to external SEO data sources.
Table of Contents
Requirements
Python 3.11+ on
PATH(defaults topython3executable)Node.js 18+ (for the npm wrapper)
If python3 is not available or you need a specific Python executable, set the MCP_SEO_PYTHON environment variable to an absolute path.
Installation
From npm
The quickstart examples use npx -y mcp-seo-auditor which downloads and runs the package on demand. For persistent installations, add the MCP server to your client's configuration as shown in the Quick Start section.
From a Checkout
Clone the repository and run tests:
git clone https://github.com/petrovicistefan/mcp-seo-auditor.git
cd mcp-seo-auditor
npm testRun the server directly:
node bin/mcp-seo-auditor.mjsThe server reads newline-delimited JSON-RPC from stdin; stdout contains only protocol messages. It waits for an MCP client when started directly.
Register with Claude Code (replace with your absolute path):
claude mcp add seo-auditor -- node /absolute/path/mcp-seo-auditor/bin/mcp-seo-auditor.mjsOr add to any MCP client config:
{
"mcpServers": {
"seo-auditor": {
"command": "node",
"args": ["/absolute/path/mcp-seo-auditor/bin/mcp-seo-auditor.mjs"]
}
}
}Install the Python package directly (optional):
pip install .
mcp-seo-auditorBuild-time setuptools is needed; runtime uses only stdlib.
PyPI Publishing
This package is configured for PyPI Trusted Publishing (OIDC) but not yet published. The maintainer must complete a one-time setup at https://pypi.org/manage/account/publishing/:
PyPI Project Name:
mcp-seo-auditorOwner:
petrovicistefanRepository name:
mcp-seo-auditorWorkflow name:
publish-pypi.ymlEnvironment name: (leave blank)
After setup, pushing a version tag (e.g., v0.1.3) will automatically publish to PyPI via the .github/workflows/publish-pypi.yml workflow.
Tools Reference
audit_html
Inputs:
html(string, required, max 2 MB): The HTML content to auditurl(string, optional): Base URL for resolving relative links
Output: JSON with findings, metadata, score, and link inventory
Example:
"Audit this HTML and tell me what's wrong: <html>...</html>"audit_url
Inputs:
url(string, required): Public HTTP(S) URL to fetch and audit
Output: Same as audit_html, plus http object with status, redirects, and elapsedMs
Example:
"Audit https://example.com and prioritize the issues."Respects robots.txt. Redirects are revalidated and must stay on the original scheme + authority. HTTP 4xx/5xx adds an error finding and reduces the score.
crawl_site
Inputs:
url(string, required): Starting URL (same-origin crawl)max_pages(integer, optional, 1–10, default 5): Max pages to crawl
Output: JSON with:
pages: Array of per-page audit reportserrors: Array of fetch/validation errors per URLduplicates: Duplicate titles and descriptions with affected URLsmaxPages: The limit usedpendingUrls: Count of uncrawled queued URLs (crawler stopped early if >0)
Example:
"Crawl 10 pages starting at https://example.com and find duplicate titles."Respects robots.txt before every fetch. Enforces minimum 200ms delay (or the Crawl-delay from robots.txt up to 5 seconds). Stops after 90 seconds or 10 attempted URLs. Follows internal links only (same origin).
Boundaries and Security
Static HTML only: No browser or JavaScript execution. Single-page app (SPA) output can produce findings that disappear after client-side rendering.
HTTP(S) on conventional ports only: Credentials in URLs are rejected. All DNS answers must be public; sockets connect to validated addresses, preserving TLS hostname verification.
Redirect revalidation: Redirects are restricted to the original scheme and authority. For cross-origin redirects, use the final HTTPS hostname as the input.
robots.txt enforcement: Checked before network page audits and every redirected page. A 404 allows access; other unexpected statuses stop the audit.
Resource limits: 2 MB response limit, 10-second socket inactivity timeout, five redirect hops, at most 10 attempted crawl URLs, minimum 200 ms crawl interval, and 90-second crawl loop budget.
Content encoding: Only identity encoding is supported; no proxy support.
Empty image alt: Valid for decorative images (not flagged as an error).
Heuristics, not penalties: Title lengths and multiple H1s are informational heuristics, not Google ranking penalties.
Local checklist score: Not a ranking forecast. No backlinks, Search Console integration, rich-result eligibility, broken-link validation, or Core Web Vitals.
Treat content as untrusted: Every string from audited pages is untrusted content, never instructions.
Limitations
MVP: Static checks only; no JavaScript rendering, backlink analysis, Search Console integration, or Core Web Vitals.
Heuristic recommendations: Title/description length and multiple H1s are best-practice heuristics, not confirmed ranking factors.
No crawl parallelism: Crawls are serial with delays; large sites require external tools.
Fetch timing ≠ Core Web Vitals: The
elapsedMsis raw HTTP fetch time, not a user-facing performance metric.Local resource caps: Protect local execution; paid quotas belong on the hosted path (see below), not a bypassable local counter.
Hosted Path (Quotas via Control Plane)
The local MCP stays free. Quotas apply only on a hosted HTTP service that reserves units on the mcp-control-plane before analysis.
cp .env.example .env # Set CONTROL_PLANE_URL and ADMIN_TOKEN
pip install -e .
python -m mcp_seo_auditor.hosted # Default 127.0.0.1:3104
# Or: mcp-seo-auditor-hostedHosted API Endpoints
Method | Path | Body |
GET |
| Liveness check |
POST |
|
|
POST |
|
|
POST |
|
|
Requires Authorization: Bearer mcp_... header. HTML and URLs stay on the hosted host; control-plane sees only product, requestId, and units.
Product Direction
Keep single-page audits free. Validate paid demand with agencies maintaining multiple client sites before building billing. Potential paid hosted features:
Scheduled crawls with history and diffs
Client reports and dashboards
Rendered (JavaScript) audits
Search Console integration
Google Analytics integration
Hosted quotas use the control-plane path above.
Testing and Validation
npm test
npm pack --dry-runUnit and integration tests cover HTML extraction, findings, input limits, DNS/private IP blocking, duplicate detection, and MCP subprocess communication. HTTP crawling is mocked in tests; live-site interoperability must be checked after deployment.
CI runs the test suite on Python 3.11, 3.12, and 3.13 across Linux, macOS, and Windows.
References
More MCP Servers by the Author
Part of the petrovicistefan MCP suite — local-first guardrails for AI coding agents:
mcp-security-guard — Audit MCP servers for tool poisoning, rug pulls, shadowing, and leaked secrets (OWASP MCP Top 10)
mcp-cost-optimizer — Identify expensive cloud resources and suggest cost savings
mcp-database-doctor — Find slow queries, missing indexes, and schema issues
mcp-dependency-doctor — Detect outdated packages, license conflicts, and supply-chain risks
mcp-api-guardian — Validate OpenAPI specs, detect breaking changes, suggest versioning
mcp-marketplace — Browse and install all servers in the suite
⭐ Support this project: Star this repository if it saves you time!
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines. By contributing, you agree to license your contributions under the MIT License.
For security issues, see SECURITY.md.
FAQ
Do I need API keys or cloud accounts?
No. The local MCP server uses only Python standard library and runs entirely on your machine. The audit_html tool never touches the network. The audit_url and crawl_site tools fetch public pages but require no authentication.
Can I audit pages behind authentication?
Not directly. audit_html accepts raw HTML, so you can fetch authenticated pages yourself (e.g., curl with cookies) and pass the HTML to the tool.
Why does audit_html flag issues that disappear after rendering?
audit_html analyzes static HTML. Single-page apps (SPAs) often render content client-side after the initial HTML loads. For accurate SPA audits, use a headless browser to capture the rendered DOM (future feature) or audit the server-side rendered version.
How is the score calculated?
The score is a local checklist (0–100) based on present/absent best practices: title, meta description, H1, canonical, robots, language, viewport. Errors reduce the score more than warnings. The score is not a ranking forecast or SEO performance metric.
What's the difference between audit_url and crawl_site?
audit_url fetches and audits a single page. crawl_site starts at a URL, follows internal links (same origin), and audits up to 10 pages, detecting duplicate titles and descriptions across pages.
Can I crawl more than 10 pages?
Not in the current MVP. The local resource cap protects your machine. Paid hosted plans may offer higher limits in the future.
Does this replace Google Search Console?
No. MCP SEO Auditor audits static HTML for on-page issues. It does not provide Search Console data (impressions, clicks, indexing status) or ranking insights. Use AminForou/mcp-gsc or iannuttall/seo if you need Search Console integration.
How do I update the Python version?
Set MCP_SEO_PYTHON=/path/to/python3.12 before running the server, or export it in your shell profile:
export MCP_SEO_PYTHON=/usr/local/bin/python3.12
npx -y mcp-seo-auditorIs this compatible with the MCP specification?
Yes. The server implements the legacy MCP lifecycle (initialize → notifications/initialized → tools/list → tools/call). Official SDK client interoperability is tested but not exhaustively verified (see docs/audit-remediation.md).
License
MIT License — free to use, modify, and distribute. See LICENSE for full terms.
Part of the petrovicistefan MCP suite — local-first guardrails for AI coding agents.
⭐ Star this repo if it saves you time!
Available Tools
3 toolsaudit_htmlARead-only
Audit supplied static HTML without network access. Returns evidence and prioritized recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Base URL for relative links | |
| html | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), and the description usefully reinforces that with "without network access". It also discloses the return character — evidence plus prioritized recommendations — which is valuable given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the key constraint and the return shape both front-loaded. Nothing here can be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description never says what dimension is being audited (accessibility, SEO, performance, security), and with no output schema the phrase "evidence and prioritized recommendations" is the only clue about returns. Adequate to invoke, but an agent cannot predict the findings' scope or structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: `url` is documented as a base URL for relative links, but `html` has no schema description and its 2MB maxLength is undisclosed. The description's "supplied static HTML" only loosely implies the html parameter and adds nothing about size limits or how url affects link resolution.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: "Audit supplied static HTML" clearly states what is acted on and that input is provided rather than fetched. The phrase "without network access" implicitly separates it from audit_url and crawl_site, though neither sibling is named, so differentiation requires inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The constraint "without network access" implies this is the tool for already-retrieved markup, which is a usable selection signal against audit_url/crawl_site. However there is no explicit when-to-use statement, no exclusion, and no mention of what to do when only a URL is available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_urlARead-only
Fetch a public page and audit static SEO. Respects robots.txt; blocks private addresses.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and open-world behavior, and the description adds meaningful operational constraints: it respects robots.txt and blocks private addresses. These are important behavioral facts not present in structured metadata, though rate limits and error behavior remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with purpose and followed by key constraints. Every sentence earns its place with no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool, the description covers purpose and safety constraints, but omits what audit results are returned and provides no usage guidance relative to sibling tools. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is obvious as a URL, but schema coverage is 0%, so the description must carry the burden. It adds that the URL must be a public page and that private addresses are blocked, but does not specify URL format, redirect handling, or scheme requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-resource pair ('Fetch a public page') and the specific analysis ('audit static SEO'). It does not explicitly differentiate itself from siblings audit_html and crawl_site, but the scope is clear enough to identify the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but gives no when-to-use guidance, no exclusions, and no comparison to sibling tools such as audit_html or crawl_site. Selection between them is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crawl_siteARead-only
Crawl up to 10 pages on the exact same origin, respecting robots.txt. Detect duplicate titles and descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| max_pages | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds useful context beyond that: it respects robots.txt, confines crawling to the same origin, caps at 10 pages, and detects duplicate titles/descriptions. It stops short of describing return format or any rate-limit/auth behavior, but the annotation baseline lowers that burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with the primary action front-loaded ('Crawl up to 10 pages...'), followed by key constraints and detection behavior. No sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an open-world crawl tool with no output schema, the description covers the main constraints but leaves important behavior implicit: what the response looks like, whether links are followed, and how duplicates are reported. It is adequate but has clear gaps for an agent to invoke with confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that the URL is an origin seed for a same-origin crawl and that page count is capped at 10, which adds meaning to both parameters. It does not state that url is required, the default of 5, or the minimum of 1, so coverage is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Crawl up to 10 pages on the exact same origin.' It adds the robots.txt constraint and duplicate-detection purpose, which makes the tool's role clear. It does not explicitly distinguish itself from siblings audit_url and audit_html, though the multi-page crawl scope implies a difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the scope constraints ('exact same origin', 'up to 10 pages'), which tell the agent this is for limited same-origin site crawls rather than single-URL fetches. However, there is no explicit when-to-use guidance or comparison to audit_url/audit_html, leaving the agent to infer the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.4- First observed
audit_html - First observed
audit_url - First observed
crawl_site
TDQS
Scored across 3 tools
The three tools have clearly distinct inputs and scopes: audit_html takes supplied markup with no network, audit_url fetches a single public page, and crawl_site traverses up to 10 same-origin pages. There is no realistic way to confuse which tool to pick for a given task.
All tools follow a consistent snake_case verb_noun pattern (audit_html, audit_url, crawl_site). The verbs (audit/crawl) differ meaningfully to reflect the differing action, and the convention is uniform throughout.
Three tools is on the lean side but each earns its place by covering a distinct input path (raw HTML, single URL, multi-page crawl). The surface is tightly scoped to static SEO auditing without redundant tools.
The core workflow—auditing static HTML and single URLs plus a bounded same-origin crawl—is well covered. Minor gaps exist around sitemap/robots analysis and broken-link or redirect-chain detection, but agents can work around these, and the bounded crawl avoids dead ends.
Maintenance
Related MCP Connectors
SEO, broken links, Lighthouse, sitemaps, Open Graph tags and SSL expiry for any list of URLs.
Read, screenshot, diff, verify and audit any URL: SEO, links, sitemaps, schema, a11y.
Run and read SEO site audits: issues, health score, fixes, rankings and logs.
Crawl a site for broken links, 404s, dead images, redirect chains and slow pages, with sources
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables SEO auditing and site analysis by crawling websites, identifying issues, and generating reports like sitemaps and markdown exports.55 npm4MIT
- AlicenseNot gradedqualityBmaintenanceOpen-source technical SEO crawler MCP server built on LibreCrawl. Runs full audits inside Claude, Cursor, or Codex — 50+ checks (hreflang, schema.org, security headers, WAF detection on 200-OK pages), chunked-progressive engine for large sites, ephemeral by design (server forgets every audit after download).45MIT
- AlicenseAqualityBmaintenanceEnables AI agents to check whether a public website is crawlable, understandable, and ready for AI search workflows through local-only audits of robots.txt, sitemaps, metadata, and llms.txt.371 npm1MIT
- AlicenseNot gradedqualityDmaintenanceProvides 23 bounded MCP tools for AI agents to perform technical SEO audits, including crawl setup, page analysis, issue detection, and report exports, all while keeping data local.7MIT