google-seo-mcp
SEO & GEO MCP server: Google Search Console, GA4, PageSpeed Insights, structured data, llms.txt, AI crawler checks, WordPress (Yoast, WP-CLI over SSH), GitHub (in-place edits, images) and Gmail attachments as 100 tools for AI agents; optional hosted mode with Google sign-in, per-user tokens and a Gi…
Install / Use
claude mcp add Akxan -- npx -y github:Akxan/google-seo-mcpIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AI & Machine LearningSupported Platforms
Our assessment of google-seo-mcp
google-seo-mcp scores 76/100 on our quality scale, 820th of 957 AI & Machine Learning skills we index.
Its MCP Server is 39 KB long, well organised into 29 sections with 18 code examples: a thorough specification that gives an agent plenty to work with.
It has 10 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated today, so google-seo-mcp is actively maintained.
- Our last check on 2026-09-26 found the source still online.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 97/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
google-seo-mcp compared with similar skills
All 4 of these similar skills score higher than google-seo-mcp; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| google-seo-mcp (this skill)by Akxan | 76 | 10 | today | MCP Server |
| claude-memby thedotmack | 100 | 96.6k | today | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 91.8k | 20d ago | CLAUDE.md |
| Understand-Anythingby Egonex-AI | 100 | 85.4k | 3d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.5k | today | CLAUDE.md |
Frequently asked questions
- How do I install google-seo-mcp?
- Run
claude mcp add Akxan -- npx -y github:Akxan/google-seo-mcp. The install tabs above show the steps for each supported agent. - Which AI agents does google-seo-mcp work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is google-seo-mcp safe to use?
- It is MIT-licensed and scores 97/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is google-seo-mcp still maintained?
- The repository was last updated today, so google-seo-mcp is actively maintained.
Skill content
View source on GitHubgoogle-seo-mcp
SEO & GEO MCP server for Claude, Codex, Cursor and any MCP client — Google Search Console, Google Analytics 4, PageSpeed Insights, structured data, llms.txt, WordPress and GitHub as 100 tools, so an assistant can diagnose and fix technical SEO, content and generative-engine-optimization issues in one conversation.
Google Search Console · Google Analytics 4 · PageSpeed & CrUX · on-page and GEO audits · WordPress over SSH · GitHub
Quick start · Tools · Any agent · Architecture · Configuration · Deploy 24/7 · 中文文档
</div>Why
google-seo-mcp is a Model Context Protocol server for SEO automation with AI agents. It connects Google Search Console, Google Analytics 4 (GA4), PageSpeed Insights / Core Web Vitals, the Chrome UX Report, Knowledge Graph, Wikidata, IndexNow, WordPress (Yoast SEO, WP-CLI over SSH) and GitHub, and adds GEO (generative engine optimization) checks: AI crawler access for GPTBot, OAI-SearchBot, ClaudeBot and PerplexityBot, llms.txt, JSON-LD / schema.org structured data, E-E-A-T signals and AI citation tracking.
Most SEO MCP servers wrap one API. Real SEO work crosses several: you find a striking-distance keyword in Search Console, check the landing page's engagement in GA4, audit the page, rewrite its title and FAQ, publish the change to WordPress or a static-site repo, then watch the numbers. This server gives an assistant every step of that loop as tools, with the guard-rails a public-facing site needs: read-only mode, destructive-action annotations, and untrusted-content instructions.
What it can do
| Area | Tools |
|---|---|
| Search Console (16) | gsc_list_sites, gsc_search_analytics, gsc_site_snapshot, gsc_compare_periods, gsc_opportunities (position 8–20 quick wins), gsc_ctr_opportunities, gsc_cannibalization, gsc_question_queries, gsc_rich_results_report, gsc_inspect_url, gsc_index_coverage (batch URL inspection with sitemap membership, referring URLs, rich-result issue severities and orphan detection), gsc_list_sitemaps (including the child sitemaps of an index) / gsc_submit_sitemap / gsc_delete_sitemap, gsc_add_site / gsc_delete_site |
| Google Analytics 4 (11) | ga_list_properties, ga_property_config (streams, custom dimensions/metrics, key events, audiences with their defining clauses, Ads links, retention, attribution model and lookback windows, Google Signals state — read-only), ga_run_report (up to 4 date ranges, in-list and OR filters, and a dataQuality note whenever rows were sampled or withheld by privacy thresholding), ga_batch_run_reports, ga_run_pivot_report, ga_run_funnel_report, ga_run_realtime_report, ga_get_metadata, ga_check_compatibility, ga_compare_periods, ga_landing_page_seo (organic landing pages merged with Search Console, and a warning when GA4 records far fewer organic sessions than Search Console clicks, the signature of consent mode or a missing tag) |
| Page & site audits (10) | page_audit, site_crawl, pagespeed, sitemap_check, robots_check, canonical_host_check (www/https/trailing-slash variants must all land on one address), hreflang_check, social_preview_check, compare_pages, keyword_suggest |
| GEO (14) | ai_crawler_access, llms_txt_check, llms_txt_generate, structured_data_audit (per-type validation, cross-page entity consistency, and what makes the entity resolvable: live sameAs profiles, schema phone against visible text, one @id for publisher/author to reference), schema_generate, schema_validate, geo_page_score, geo_answer_coverage (per question people actually search, does a passage on the page answer it in its opening sentences, or is the answer missing, unheaded or buried), eeat_audit, knowledge_graph_check, indexnow_submit, ai_citation_check, ai_search_sources (batch up to 10 questions against Perplexity's search endpoint and rank who gets cited), brand_mentions |
| Analysis (8) | seo_digest (what changed since the previous period: totals, the pages and queries that moved, what stopped bringing clicks - the weekly check the server can also send by itself), migration_check (pre-migration URL safety net), cross_site_links, content_refresh_candidates, crux_history, crux_snapshot (latest real-user record with the LCP sub-part breakdown, so you can see whether LCP is slow because of the server, resource discovery, transfer or render-blocking), wikipedia_pageviews (monthly views per language for an entity, with seasonality and year-on-year change), reviews_snapshot |
| WordPress (28, optional) | wp_site_info, wp_list_posts, wp_get_post, wp_update_post, wp_seo_status, wp_update_seo, wp_bulk_update_seo (Yoast fields), wp_builder_check, wp_builder_list_items, wp_builder_update, wp_builder_restore (BeTheme / Muffin Builder content, including the entries inside toggles, tabs and FAQ lists, which can also be appended to, with snapshot-based undo), wp_list_media, wp_update_media (alt text), wp_upload_media (fetch, convert and resize an image into the media library, optionally as the featured image), wp_list_terms, wp_update_term, wp_internal_link_suggestions, wp_list_redirects, wp_add_redirect, wp_delete_redirect (Yoast Premium), wp_get_schema, wp_set_schema (JSON-LD injection), wp_get_seo_settings, wp_update_seo_settings (site-wide Yoast: title templates, archive noindex, breadcrumbs, organization identity with its contact email, telephone and social profiles, sitemap), wp_list_revisions, wp_update_post_from_revision (rollback with a diff preview), wp_delete_cache (site-wide purge, critical-CSS regeneration, and clearing WP Rocket's used CSS after a header, footer or theme change), wp_run (raw WP-CLI) |
| GitHub (8, optional) | github_get_file, github_list_dir, github_search_code, github_list_commits, github_commit_files (atomic multi-file commits with full content, in-place find/replace edits for large files, or base64 binaries), github_commit_image (fetch an image URL, convert to webp, resize or crop, add variants, commit), github_commit_attachment (same, from a Gmail attachment), github_build_status (did the commit actually build and go live: check runs, deployments, or a direct fetch of the page for hosts that report nothing back) (so a static site can be edited from any client) |
| Gmail (2, optional) | gmail_find_attachments (read-only search of the authorized mailbox listing each message's attachments, so a photo someone emailed lands in the repo through github_commit_attachment without leaving the chat), gmail_get_message (read the body of an emailed draft article or a client's corrections, plain text or HTML, with paging) |
Plus google_auth_status for diagnostics, and oauth_list_grants / oauth_revoke_grant to see and cut off the clients that connected through the OAuth layer (operator token only: a client that arrived through OAuth cannot see them). Every tool carries MCP annotations (readOnlyHint, destructiveHint, idempotentHint), the server publishes instructions for the model, and there is a read-only mode and toolset filtering.
- "Give me a snapshot of example.com for the last 28 days."
- "Which queries rank between 8 and 20 with the most impressions, and which posts are they on?"
- "Audit https://example.com/guide and score it for AI answer engines."
- "Find question-style queries we already get impressions for and tell me where a FAQ is missing."
- "Check whether GPTBot, PerplexityBot and ClaudeBot can reach the homepage."
- "Before we move to the new host, verify every URL with traffic still resolves on new.example.com."
- "Rewrite the SEO title and meta description of post 515 and publish it."
- "Take this photo URL, make a 1200×675 webp cover plus a 1000-wide card, commit both to public/assets/img/blog/, then register the cover in src/lib/blog.js."
- "Alba emailed three photos yesterday. Find them, turn the first one into the cover for the new post and commit it."
Tech stack
| Layer | Choice | Notes |
|---|---|---|
| Runtime | Node.js ≥ 22, TypeScript 5, ES modules | no build-time codegen, tsc only; googleapis requires Node 22 |
| Protocol | @modelcontextprotocol/sdk | stdio for local clients, stateless Streamable HTTP for servers |
| Google | googleapis (Search Console v1, Analytics Data v1beta, Analytics Admin v1beta, Gmail v1 read-only, optional) + google-auth-library | REST clients, no gRPC; service account or OAuth |
| Web audits | cheerio, image-size, sharp, native fetch | PageSpeed Insights, CrUX (history and latest record with the LCP sub-part breakdown), Knowledge Graph, Wikidata, Wikimedia pageviews, Internet Archive CDX, Google Autocomplete, IndexNow, Perplexity, Brave, Places APIs over HTTPS |
| WordPress | ssh + WP-CLI, two PHP helpers uploaded on first use | Yoast indexable rebuild, cache purge (WP Rocket / Super Cache / W3TC / LiteSpeed), mu-plugin for JSON-LD |
| GitHub | REST + Git Data API, sharp for images | token from GITHUB_TOKEN or gh auth token; edits are validated to match exactly once before anything is committed |
| Hosted mode | node:sqlite, google-auth-library OAuth2, GitHub App (RS256 JWT → installation tokens), server-rendered HTML | optional multi-tenant web UI: Google sign-in, encrypted refresh tokens, per-user bearer tokens, per-user GitHub access |
| Validation | zod schemas per tool | descriptions double as LLM documentation |
| Quality | smoke test with tool-list snapshot, secret-scan git hooks | npm test, npm run check:secrets |
Architecture
flowchart LR
subgraph Clients
CC[Claude Code]
CD[Claude Desktop]
HTTP[Any MCP client<br/>over HTTPS]
end
subgraph Server["google-seo-mcp"]
direction TB
T1[stdio transport]
T2[Streamable HTTP<br/>Bearer auth · /healthz]
HM[Hosted mode<br/>Google sign-in · SQLite<br/>per-user tokens]
S["createServer()<br/>annotations · read-only · toolsets · instructions"]
subgraph Tools
GSC[gsc.ts]
GA[ga.ts]
WEB[web.ts · crawl.ts]
GEO[geo.ts]
AN[analysis.ts]
WP[wp.ts]
GH[github.ts]
GM[gmail.ts]
end
T1 --> S
T2 --> S
S --> Tools
en
Truncated for display — read the full file on GitHub.
Related Skills
claude-mem
96.6kPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Agent-Reach
91.8kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Understand-Anything
85.4kGraphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.
headroom
74.5kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
