SEO MCP
MCP server for SEO evidence — on-page audit, crawl, GSC, PageSpeed, optional SERP
เอกสาร
mcp-server-seo
Rust MCP server for SEO evidence used by Grok Build and Claude Code: on-page audit, robots/sitemap, polite crawl, PageSpeed Insights, Google Search Console, optional paid SERP.
stdio + JSON-RPC via rmcp. No Docker.
Build
cargo build --release
# target/release/mcp-server-seo
Config
Optional: ~/.config/mcp-server-seo/config.toml (see config.example.toml).
mkdir -p ~/.config/mcp-server-seo
cp config.example.toml ~/.config/mcp-server-seo/config.toml
chmod 600 ~/.config/mcp-server-seo/config.toml
Phase 1 tools work with zero keys. GSC needs a service-account JSON; PageSpeed needs a free API key; SERP needs Serper (optional).
Tools (summary)
| Group | Tools |
|---|---|
| Foundation | status, sites_list, site_resolve |
| On-page | page_audit, redirect_trace, robots_check, sitemap_fetch, sitemap_validate, extract_structured_data, schema_validate, link_check |
| Crawl | crawl_run, crawl_report, crawl_results, crawl_diff, sitemap_coverage, sitemap_build |
| Performance | pagespeed_audit |
| GSC | gsc_auth_check, gsc_search_analytics, gsc_opportunities, gsc_url_inspect, gsc_url_inspect_batch, gsc_list_sitemaps, gsc_submit_sitemap |
| Keywords/SERP | keyword_suggest, serp_fetch, rank_history |
| Composites | page_snapshot, page_history, audit_page, audit_site, verify_live |
Recommended free-first agent playbook
page_audit/schema_validateon home + 1–2 templates- Short
crawl_run→ readreport.url_patterns(tag×geo / faceted explosion) - Fix in the app (not by inventing public copy)
verify_liveafter deploy (H1, OG ~1200×630, SearchAction probe, sitemap, patterns)- GSC sitemap submit only when the URL set is complete
Content publish (draft intros, FAQs) stays in the CMS/admin — this server is evidence, not a writer.
Safety
- SSRF: public http(s) only; private/reserved IPv4+IPv6 blocked; redirect hops re-checked
sitemap_build: writes only understorage.data_dir(relativeout_path)- GSC submit:
confirm=YES-SUBMIT(sitemaps API — not URL Inspection) - Paid SERP:
dry_run=truedefault;confirm=YES-PAY+ budget ledger - Static HTML:
rendered: false— useagent-browserfor JS
Do not reimplement
Use sibling MCPs: google-analytics, google-adwords, cloudflare, namecheap, agent-browser.
Clients
Already registered as seo in Grok Build / Claude Code (restart clients after rebuild).
Tests
cargo test --release
./tests/test-stdio.sh
Plan
See PLAN.md (merged Grok + Fable + Kimi + critique amendments).