SEO Audit MCP Server
by glivera · remote · no sign-in to list tools · v0.2.0 · published by GitHub user glivera
Professional SEO auditing: 15 tools, 9 checks, CWV, E-E-A-T, schema, GEO. Free tier.
15 tools: 12 change things and 3 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things12Claude Code: ask: see these tools
- Only reads3Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http seo-audit https://seo.accruedev.com/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
15 tools
Changes things 12Claude Code: ask
seo_check_contentE-E-A-T and content quality analysis powered by AI.Can send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it E-E-A-T and content quality analysis powered by AI.
seo_check_geoAI search readiness: crawler access, llms.txt, passage citability.Can send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it AI search readiness: crawler access, llms.txt, passage citability.
seo_check_localLocal SEO signals: NAP consistency, LocalBusiness schema, GBP indicators.Can send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it Local SEO signals: NAP consistency, LocalBusiness schema, GBP indicators.
seo_check_metaCheck title, meta description, OG tags, canonical, and robots directives.Can send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it Check title, meta description, OG tags, canonical, and robots directives.
seo_check_performanceCore Web Vitals analysis via Google PageSpeed Insights.Can send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it Core Web Vitals analysis via Google PageSpeed Insights.
seo_check_schemaDetect and validate JSON-LD structured data on a page.Can send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it Detect and validate JSON-LD structured data on a page.
seo_competitor_checkSERP competitor analysis.Can send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it SERP competitor analysis. Shows where you rank for a keyword, top competitors, and on-page comparison. Requires Agency plan or higher.
seo_crawl_siteCrawl a website via BFS, check SEO on every page, and return site-wide analysis.Reads text others writeCan send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- untrusted-inputThe name "seo_crawl_site" says "crawl": it reads web pages, which anyone can write.
- untrusted-inputThe description's first sentence says "crawl": it reads web pages, which anyone can write.
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it Crawl a website via BFS, check SEO on every page, and return site-wide analysis.
seo_deep_auditFull multi-agent SEO audit (async).Can send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it Full multi-agent SEO audit (async). Returns a job_id to poll with seo_audit_status.
seo_generate_schemaGenerate appropriate JSON-LD structured data for a page using AI.Can send data outNo findings
Why it is in this group
- The name "seo_generate_schema" says "generate": a word for a change.
What it can reach
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it Generate appropriate JSON-LD structured data for a page using AI.
seo_quick_auditQuick SEO audit of a single page.Can send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it Quick SEO audit of a single page. Returns score, top issues, and actionable fixes.
seo_usageCheck remaining audit credits and current plan status.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Check remaining audit credits and current plan status.
Only reads 3Claude Code: allow
seo_audit_statusCheck the progress and results of an async deep audit job.No findings
Why it is in this group
- The name "seo_audit_status" says "status": a word for reading.
Description, as the server wrote it Check the progress and results of an async deep audit job.
seo_crawl_statusCheck the progress and results of a site crawl job.Reads text others writeNo findings
Why it is in this group
- The name "seo_crawl_status" says "status": a word for reading.
What it can reach
- untrusted-inputThe name "seo_crawl_status" says "crawl": it reads web pages, which anyone can write.
- untrusted-inputThe description's first sentence says "crawl": it reads web pages, which anyone can write.
Description, as the server wrote it Check the progress and results of a site crawl job.
seo_historyView your past audit results.No findings
Why it is in this group
- The description's first verb is "view": a word for reading.
Description, as the server wrote it View your past audit results. List recent audits or retrieve a specific audit by ID.
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data.
- Reads private data0
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write2
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out11
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Install
Pinned to version 0.2.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http seo-audit https://seo.accruedev.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__seo-audit__seo_audit_status",
"mcp__seo-audit__seo_history",
"mcp__seo-audit__seo_crawl_status"
],
"ask": [
"mcp__seo-audit__seo_quick_audit",
"mcp__seo-audit__seo_check_schema",
"mcp__seo-audit__seo_check_meta",
"mcp__seo-audit__seo_usage",
"mcp__seo-audit__seo_deep_audit",
"mcp__seo-audit__seo_check_performance",
"mcp__seo-audit__seo_check_content",
"mcp__seo-audit__seo_check_local",
"mcp__seo-audit__seo_check_geo",
"mcp__seo-audit__seo_generate_schema",
"mcp__seo-audit__seo_crawl_site",
"mcp__seo-audit__seo_competitor_check"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as seo-audit. Review it before you use it.
Capability tags behind 12 rules
- mcp__seo-audit__seo_quick_audit outbound
- mcp__seo-audit__seo_check_schema outbound
- mcp__seo-audit__seo_check_meta outbound
- mcp__seo-audit__seo_deep_audit outbound
- mcp__seo-audit__seo_check_performance outbound
- mcp__seo-audit__seo_check_content outbound
- mcp__seo-audit__seo_check_local outbound
- mcp__seo-audit__seo_check_geo outbound
- mcp__seo-audit__seo_generate_schema outbound
- mcp__seo-audit__seo_crawl_site untrusted-input, outbound
- mcp__seo-audit__seo_competitor_check outbound
- mcp__seo-audit__seo_crawl_status untrusted-input
