SEO MCP server
SEO MCP server for Claude, Google Search Console and GA4
Connect Claude, Codex, Cursor or any Streamable HTTP client. 43 tools answer from your real search data — Search Console queries and pages, GA4 sessions, AI crawler telemetry and audit findings. Read-only by default, with two confirmed writes.
Works with Claude Code, Cursor, VS Code, Codex, ZCode, OpenCode, and compatible MCP clients.
Try asking your assistant
Portfolio
“Which sites need attention right now?”
Search Console
“Which queries lost clicks this week on example.com?”
Fixes
“What should I fix first on example.com?”
Start by asking which sites exist, then narrow to one site and one question.
Connect your assistant
One stateless endpoint over Streamable HTTP. Read calls are free; OAuth needs no copied secret, and an API key works with every client (and is required for the write tools).
MCP server URL
https://visdenda.com/v1/mcpClaude Code: add the server in one command
claude mcp add --transport http visdenda \
"https://visdenda.com/v1/mcp"Then run /mcp inside Claude Code to sign in and pick the sites you want to expose.
OAuth · recommended
Choose “sign in” in your client. You approve specific sites and read scopes on this site; access is revocable under Access → Connected apps.
API key
Create a key in the console and send it as a Bearer header. Use audits:write only when you want run_audit or import_sitemap (both need confirm + idempotency key).
Google Search Console MCP server: what it exposes
Once a Search Console property is bound to a site, the read tools answer from the archived property data instead of a screenshot of the GSC UI.
Queries and pages
Top queries and landing pages by clicks, with the prior-period delta next to each number.
Clicks, impressions, CTR and position
The four Search Console metrics an assistant can answer with, scoped to the property you connected.
Site context
Index status, audit findings and radar updates join the same site, so a search question can end in a fix.
Tool names and scopes: the MCP reference.
Google Analytics MCP (GA4): sessions and AI referrals
GA4 reads require a property bound to the same site. The join is per landing page, so a click from Search Console and the session that followed stay one row.
Sessions per landing page
GA4 sessions are joined to the same page as Search Console clicks, not reported in a separate tab.
AI referrals
AI referral visits are kept separate from AI Overview clicks, so the two numbers cannot be confused.
One page, every signal
A page report joins search, sessions, AI fetches, AI visits, index state and open findings.
How AI referrals are attributed: AI traffic analytics.
SEO MCP for Claude: four steps to connect
An SEO MCP server is only useful if it can see search data. This endpoint reads the Search Console property you connected — queries, pages, clicks and position — and the GA4 property bound to the same site. It does not scrape Google, and it does not ask you to export CSV files.
Step 1
Add the site
Verify the domain in the console, or import it from Search Console. Every MCP tool is scoped to a site you own, so this is the unit the assistant reasons about.
Site verification →Step 2
Connect Search Console
Grant read access to the property. Daily performance rows are archived, so the assistant can answer with clicks, impressions, CTR, average position and the prior-period delta — not a screenshot of the GSC UI.
Search Console setup →Step 3
Add the MCP endpoint to Claude
Paste the endpoint, choose “sign in”, then pick the site and read scopes on the consent screen. OAuth copies no secret into the client; an API key is the alternative for clients without OAuth.
Client setup →Step 4
Ask a search question
“Which queries lost clicks this week?” maps to get_gsc_overview and get_gsc_queries. Once a GA4 property is bound to the same site, get_traffic_pages joins sessions and AI visits to those clicks.
Need the exact tool names and scopes? The MCP reference lists every tool, the daily caps and the two write actions; the reporting dashboard is the same data with a UI.
43 tools
Every tool returns a one-line summary next to structuredContent. Scopes are the smallest set that does the job: audit:read for sites and audits, radar:read for radar updates, and audits:write for the two write actions.
Audit & history
6- audit_url — Check one URL, or verify a fix against that site's last audit run.
- get_audit_history — Recent audit runs with status, summary and coverage.
- get_audit_trends — Pass/fail/na trend across runs, fixed vs regressed.
- get_site_health — 0–100 health score with four explainable penalties.
- compare_audit_runs — Any two runs: added/fixed/regressed and per-run totals.
- get_opportunities — Fail-weighted fix opportunities, score ordered.
Competitors
6- get_competitor_changes — Competitor sitemap events (added, removed, lastmod) over the last N days.
- get_competitor_feed — Competitor pages with content-match tier, own-page matches, excerpt and triage state.
- get_competitor_gaps — Competitor pages with no matching own page, worst gaps first.
- get_competitor_brief — 30-day brief per competitor: new pages, coverage, themes, gaps, pace.
- get_competitor_rank — Latest keyword-compare top-10 standings for your site vs competitors.
- get_competitor_discovery — Competitor candidates from the top 10 of your tracked keywords.
Findings & fixes
4- get_audit_findings — Findings for a site (latest run or by run id).
- diagnose_site — Ranked to-fix list: failing rules × pages, linked updates.
- get_finding_lifecycle — Open finding backlog with age buckets and recent resolutions.
- explain_finding — One finding plus rule doc and guidance.
Portfolio
3- list_sites — Sites under this key, their verify state and latest run.
- get_portfolio — All sites under the key, attention order, open totals.
- get_project_status — One-call snapshot: runs, changes, priorities, radar, GSC archive.
Search radar
2- get_radar_updates — Recent P0/P1 updates with active-rule counts.
- get_update_impact — One update × one site: linked rules and findings.
SERP research
7- get_serp_results — Live Google SERP results for up to 10 queries, cached 12h.
- get_keyword_metrics — Volume, difficulty and CPC for tracked keywords (30-day cache).
- research_keywords — Keyword ideas from up to 5 seeds, cached 24h.
- check_ai_visibility — AI Overview presence for tracked terms, reusing same-day samples.
- estimate_research_cost — Preflight a paid research call: cache hits and estimated cost.
- list_research_reports — Saved SERP, keyword and AI-Overview research reports.
- get_research_report — One report plus GSC, AIO and tracked-keyword context.
Site signals
4- get_site_fingerprint — Technology fingerprint (cached when fresh).
- get_site_i18n — i18n maturity L0–L4 with gaps.
- get_aio_visibility — Latest AI Overview presence and citations; paid plans add sampled trend.
- get_site_insights — Ranked insights with evidence, impact and what could not be checked.
Traffic
8- get_gsc_monthly — GSC monthly archive row, or na with reason.
- get_gsc_overview — GSC clicks, impressions, CTR and position with prior-period deltas.
- get_gsc_queries — Top search queries by clicks, with deltas.
- get_gsc_pages — Top landing pages by clicks, with deltas.
- get_ai_traffic — What AI crawlers and AI referrals actually did: hits, robots violations, markdown.
- get_page_report — One URL across search, visitors, AI fetches, AI visits, index, findings and CWV.
- get_traffic_pages — Per-page join of clicks, average position, sessions, AI fetches, AI visits and open findings.
- get_crawler_gaps — Paths crawlers asked for that 404 or are blocked, plus machine-file reads.
Write actions
3- run_audit — Start a full audit now (costs 1 audit run; confirm + idempotency key).
- import_sitemap — Add sitemap pages to the audit list (confirm + idempotency key).
- verify_fix — Re-check one finding and close it as fix-applied when it passes.
Live schemas, annotations and example calls: the MCP reference.
You choose the access
Read-only by default
OAuth connections can read. The only write actions — run an audit, import sitemap pages — need an API key with audits:write, confirm:true and an idempotency key.
Free on both plans
Read calls do not consume the monthly API quota. Daily caps stop abuse: 2,000 calls, 50 network fetches, and GSC live reads on paid plans.
Scoped, revocable access
OAuth grants are limited to the sites and scopes you pick and can be revoked under Access → Connected apps. API keys carry the smallest scope that does the job.
Scopes, daily caps and error codes: auth & limits. Keys can be revoked from the console at any time.
A few useful details
What is the Visdenda MCP server?
A remote Model Context Protocol server. It exposes SEO tools over one Streamable HTTP endpoint, so an AI client can read your sites, audits, findings, trends, radar updates and GSC traffic without copying dashboards by hand.
Can it read Google Search Console and GA4?
Yes, once the property is connected to the site. Search tools return clicks, impressions, CTR, average position and prior-period deltas; traffic tools join GA4 sessions and AI visits per page. The grant is read-only and limited to the sites you approve.
How do I connect Google Search Console to Claude?
Verify the site, connect the Search Console property in the console, then add the MCP endpoint in Claude and approve the site and read scopes. Per-client steps and the exact tool names are in the MCP setup guide.
Which assistants can connect?
Any client that supports remote MCP over Streamable HTTP: Claude Code, Codex, Cursor, or a generic client that can send an Authorization header. OAuth-capable clients can sign in and pick sites; others can use an API key.
Do I need an account and a key?
You need an account. The easiest path is OAuth: the client opens this site, you choose sites and read scopes, and no secret is copied. Prefer a key? Create one in the console. Write tools require an API key with the audits:write scope.
Can my assistant change anything?
Only through the two write tools, and only with an API key that has audits:write. Both require confirm:true plus a unique idempotency key; without confirm they return a dry-run preview. OAuth connections are read-only.
Where are the exact limits and tool schemas?
The MCP docs page lists all tools with scopes, the daily caps, the JSON-RPC error codes, and the protocol boundary. tools/list always returns the live JSON Schemas, read-only/destructive annotations and idempotency requirements.
Building an integration? Read the setup guide, the REST reference or llms.txt.