🤖MCP Server (AI Integration)
The MCP Server lets you connect AI assistants like Claude, ChatGPT, Codex, Cursor, or any MCP-compatible client to your SEO data. Ask questions in plain English and get instant answers — no need to navigate dashboards or export reports manually.

Example Reports Generated by MCP
These reports were generated entirely by the MCP Server — one prompt, zero manual work:
Laravel.com Complete SEO & Backlink Report — Traffic analytics, keyword rankings, backlink profile, competitor analysis, and trend charts in one interactive dashboard.
SEO Health Report for tuikhoeconban.com — Google Search Console audit with CTR opportunities, keyword cannibalization, zero-click queries, and prioritized recommendations.
What Can You Do With It?
Generate reports
"Generate a weekly SEO report for example.com"
Find weak pages
"Find pages with high impressions but low CTR"
Keyword cannibalization
"Which keywords have multiple pages competing?"
Ranking trends
"Show me my biggest ranking winners and losers this month"
Ranked-page changes
"Compare the captured HTML before and after this page was lost, and tell me which changes may have contributed"
Content gaps
"Find queries I'm ranking for but don't have dedicated pages"
Local SEO
"Generate a local SEO report for my business"
Multi-location analytics
"Compare my Haidilao hot pot rankings across all locations"
Client reports
"Create a professional client-ready report for example.com"
Keyword research
"Check keyword metrics for: seo tools, rank tracker"
SERP analysis
"What's ranking for 'seo tools' in Google?"
Backlink analysis
"Show me the backlinks for example.com"
Content gap
"Find keywords competitors rank for but I don't"
Backlink gap
"Find sites linking to competitors but not me"
Traffic analytics
"Show me the traffic overview for laravel.com"
Organic keywords
"What keywords does laravel.com rank for?"
Demographics
"Show me population and income data around my business"
Bulk analysis
"Compare organic traffic for laravel.com, symfony.com, and codeigniter.com"
NAP Finder
"Which domains have the most NAP citations for my business?"
Keyword explorer
"What are the keyword suggestions for 'keto diet' in the US?"
Saved keywords
"Create a keyword list called 'Competitors' and add: seo tools, rank tracker"
Grow rank tracker
"Add the top 20 content-gap keywords from my competitor into my example.com rank tracker"
Clean up rank tracker
"Remove these irrelevant keywords from my example.com rank tracker: foo, bar, baz"
Weight rank tracker keywords
"In my example.com rank tracker, make 'buy seo tools' count three times and set 'seo tools login' to Track only"
Automations
"Create an automation that exports PDF when my rank tracker finishes"
Indexing health
"How many of my pages are indexed? Which directories have the worst indexing rate?"
Indexing diagnostics
"Find pages with zero internal links that aren't indexed — orphan pages"
Internal link analysis
"Which pages have the most internal links pointing to them?"
Find internal links
"Find internal links for my five best priority pages on example.com — quote the cost first"
AI log analysis
"Which AI bots are violating my robots.txt? What questions is Perplexity asking about my site?"
Keyword insights
"Which keywords are trending up in my rank tracker?"
GA4 conversions
"Which pages generate the most conversions from organic search?"
Custom queries
"How many keywords am I tracking across all reports?"
Manage workspaces
"Create a new workspace called Client A" or "In the Client A workspace, create a rank tracker for clienta.com"
SEO Tests
"Create a split test on example.com comparing /pricing vs /pricing-v2 — 50/50 traffic, hypothesis is the new layout will lift CTR"
Local rank tracking
"Create a GMB rank tracker for Haidilao Hot Pot in Bellevue, WA — 5x5 grid at 500m radius, tracking 'hot pot bellevue' and 'best chinese bellevue', weekly on Mondays 9am Pacific"
AI visibility tracking
"Create an LLM rank tracker for my brand Acme (variants: Acme, Acme Inc) tracking 'best crm software' and 'top crm tools' in ChatGPT and Google AI Overview, weekly"
Review monitoring
"Start tracking the Google reviews for Haidilao Hot Pot Bellevue — pull the 200 most recent reviews and tell me which ones have no owner response"
Citation discovery
"Run a NAP Finder for Monsoon Seattle at 615 19th Avenue East, phone (206) 325-2111, then show me which directories cite the business"
Content briefs
"Create a content struct for 'keto meal plan', wait for the analysis, then generate an AI outline with GPT and write an article draft from it"
Keyword clustering
"Cluster these 50 keto keywords by SERP similarity and tell me how many pages I need to cover them — use the DataForSEO SERP API"
Entity analysis
"Run an NLP analysis on my keto guide and my competitor's page with TextRazor — which entities do they cover that I don't?"
The MCP server gives the AI read-only access to your database, can fetch live data from external APIs (keyword metrics, SERP results, backlinks), and can manage your saved keyword lists.
Requirements
A valid SEO Utils license key
MCP Access (one-time purchase)
Setting Up the MCP Server
Purchase MCP Access
Go to Settings → Services and scroll down to the MCP Server (AI Integration) section. Click "Purchase MCP Access" to complete the one-time purchase via Stripe.

Alternatively, you can purchase MCP access directly from your browser at app.seoutils.app/mcp/purchase — enter your license key and complete the checkout.
Refresh Purchase Status
After completing your purchase, go back to Settings → MCP Server and click the "Refresh" button to verify your purchase. This confirms your MCP access is active.

Enable the MCP Server
Once your purchase is verified, toggle "Enable MCP Server" to start the server. You should see the status change to Running (port 19515).

Connect your AI app
Under Connect an AI app, pick your app and follow its steps, described below.

Connecting to AI Assistants
In SEO Utils, go to Settings → MCP Server and use Connect an AI app: pick your app, and SEO Utils shows exactly what to do (usually one click), then how to add the SEO Utils skill. Every command has its own Copy button, already filled in with the location of SEO Utils on your computer.
Claude Desktop & Cowork
One click: Install in Claude Desktop
No
No
Claude Code
One click: Add to Claude Code
No
No
OpenAI Codex (ChatGPT desktop app, CLI, IDE)
One click: Add to Codex
No
No
OpenCode (CLI, desktop app, IDE)
One click: Add to OpenCode
No
No
Cursor
One click: Add to Cursor
No
No
VS Code (GitHub Copilot)
One click: Add to VS Code
No
No
OpenClaw
One command
No
No
Grok Build (CLI coding agent)
One command
No
No
Google Antigravity
Paste a config
No
No
Perplexity (Mac)
Paste a command
No
No
ChatGPT desktop app
One click: Add to Codex (shared MCP servers)
No
No
n8n / Make
HTTP with the auth token
No
Yes (HTTPS), unless n8n runs on the same computer
Claude Web (claude.ai)
Custom connector, token via Request headers (beta)
No
Yes (HTTPS)
ChatGPT (web), Grok (grok.com)
Not supported yet
—
—
Connected with SEO Utils 2.5.0 or earlier? Those connections use mcp-remote (Node.js) or a URL with your token. They keep working, but pick your app in Connect an AI app and install again to switch to the new connection.
Install the SEO Utils Skill (Recommended)
Install our free skill to help your AI assistant choose the right MCP tool automatically. Without it, the AI sometimes calls the wrong tool — for example, fetching third-party API data when you ask about your own rank tracker reports.
The skill uses the open Agent Skills format (SKILL.md) and works across all major AI assistants. In SEO Utils, Connect an AI app shows the skill step for the app you pick (step 2).
Claude Desktop, Cowork, claude.ai
Plugin: Customize → Plugins → Add → Add marketplace → seoutilsapp/seo-utils-skills
Automatic with Sync automatically, or Check for updates
Claude Code
Plugin: two /plugin commands
Enable auto-update, or claude plugin update
Codex, Cursor, VS Code, OpenClaw, OpenCode
Install skill button
Click Install skill again
Google Antigravity
Install skill button
Click Install skill again
Grok Build
Install skill button
Click Install skill again
ChatGPT
Save skill ZIP, then upload
Upload the new ZIP
Perplexity
Save SKILL.md, then upload
Upload the new file
Updating the Skill
We update the skill when SEO Utils adds or changes MCP tools. How you get the update depends on how you added it:
Claude plugin (Claude Desktop, Cowork, claude.ai) — in Customize → Plugins, open the
seo-utilsmarketplace and select Check for updates, or turn on Sync automatically onceClaude plugin (Claude Code) — turn on auto-update (
/plugin→ Marketplaces → seo-utils → Enable auto-update), or runclaude plugin update seo-utils@seo-utils, then/reload-pluginsInstall skill button (Codex, Cursor, VS Code, OpenClaw, OpenCode, Antigravity, Grok Build) — click Install skill again; it replaces the old copy. Restart the app if it's open
Uploaded file (ChatGPT, Perplexity, or a ZIP uploaded to Claude) — save the file again, delete the old skill in the app, and upload the new one
Copied with
curl— run the samecurlcommand again
Source: github.com/seoutilsapp/seo-utils-skills
Run SEO Tasks from Your Phone
You can run SEO tasks from your phone using either Cowork (Dispatch) or Telegram/Discord channels. Both methods process tasks on your desktop using the MCP server.
With Dispatch in Cowork, you can assign SEO tasks from your phone and Claude will execute them on your desktop.

For example, you can message Claude from your phone:
"Generate a weekly SEO report for example.com and save it as HTML"
"Check the backlink profile for competitor.com"
"Find keyword cannibalization issues for my site in GSC"
Claude processes the task on your desktop using your local SEO data and MCP tools, then returns the results to your phone.
Requirements: Your computer must be awake and Claude Desktop must be open. You need a Claude Pro or Max plan and the latest Claude mobile + desktop apps installed.
With Channels in Claude Code, you can send SEO prompts from Telegram or Discord — Claude processes them on your computer and replies right back in the chat.

Create a project folder and set up MCP
Create a folder for your SEO workspace:
Then add SEO Utils to Claude Code: in SEO Utils, choose Claude Code in Connect an AI app and click "Add to Claude Code" (see Connecting to AI Assistants). It's added for all your projects, this folder included.
Install Bun (required for channel plugins)
Set up Telegram or Discord channel
Follow the official guide for your platform:
Telegram setup — Create a bot via BotFather, install the plugin, configure, and pair
Discord setup — Create a bot in Discord Developer Portal, install the plugin, configure, and pair
Start Claude Code with channels enabled
Or for Discord:
Send SEO prompts from your phone
Open Telegram or Discord on your phone and message your bot:
"Show me the top trending queries in GSC for my site"
"Generate a backlink report for competitor.com"
"Create an automation that emails me when rank tracking completes"
Claude processes the request on your computer and replies in the chat.
Requirements: Your computer must be running with Claude Code open. Channels require Claude Code v2.1.80+, a Claude Pro or Max plan, and Bun installed.
Multiple channels for different clients
Run separate Claude Code sessions with different bot tokens — one per client or project. Each session has its own MCP connection, workspace, and chat bot.
The environment variable overrides the saved config, so each session uses a different bot. Works the same way for Discord with DISCORD_BOT_TOKEN.
Available Tools
The MCP server exposes the following tools that the AI uses automatically:
Data Tools (read your existing SEO data):
list_tables
Lists all database tables with descriptions
describe_table
Shows columns, types, and relationships for a specific table
query_database
Executes read-only SQL queries against your SEO data
query_gsc
Specialized SQL tool for Google Search Console data with built-in timezone and filter guidance
list_workspaces
Lists all workspaces and shows the active one and how it was chosen
set_workspace
Switches the AI to a different workspace until the AI app reconnects (Workspaces)
Action Tools (fetch live data from APIs):
check_keyword_metrics
Check search volume, difficulty, CPC, and search intents for keywords via DataForSEO
fetch_serp_data
Fetch live Google SERP results for keywords. Caches results to avoid duplicate API calls
get_backlink_summary
Get backlink overview: total backlinks, referring domains, domain rank, spam score, distributions
get_backlink_history
Get historical backlink trends: new/lost backlinks and referring domains over time
fetch_backlinks
Fetch individual backlink records with filters (dofollow, platform type, etc.)
get_referring_domains
Get list of domains linking to a target with rank, spam score, and backlink count
get_anchor_texts
Get anchor text distribution — which texts are used most in backlinks
get_backlink_competitors
Find domains competing for the same backlink sources
get_content_gap
Find keywords competitors rank for but you don't
get_backlink_gap
Find domains linking to competitors but not you
get_demographics
Fetch demographic data (population, income, age, homeownership) around a location — supports US, UK, Australia, and Canada
get_gmb_report_group_dashboard
Get aggregated multi-location dashboard — visibility score, rankings, trends across all locations in a report group
create_gmb_report_group
Create a report group from existing individual GMB rank tracker reports for multi-location analytics
delete_gmb_report_group
Delete a report group (individual reports are not affected)
find_google_business
Resolve a business name/address to a Google Place ID via Google Places autocomplete (used before create_gmb_rank_tracker_report or create_google_business_review_fetch)
find_google_business_from_maps_url
Resolve a Google Maps link (full URL, maps.app.goo.gl share link, or ?cid= link) to the business's Place ID, name, and address — no Google Places API key needed; goes through DataForSEO
create_gmb_rank_tracker_report
Create a new GMB rank tracker report with full grid, schedule, and keyword setup. Auto-geocodes place_id → center coords; auto-generates the measurement grid (square/circle/polygon) or accepts an explicit list of coordinates
update_gmb_rank_tracker_report
Partially update an existing GMB rank tracker report — change schedule, grid, locale, branding, or measurement points. Markers regenerate automatically when grid inputs change
run_gmb_rank_tracker
Trigger a fresh snapshot run for an existing GMB rank tracker report. Asynchronous; consumes DataForSEO credits (one task per keyword × grid point)
delete_gmb_rank_tracker_reports
Permanently delete one or more GMB rank tracker reports (up to 100 per call) with their keywords, grid, snapshots and ranking history. Each report is deleted on its own; the result lists what was deleted and why any was not
get_traffic_summary
Get organic traffic overview (ETV, keyword counts, paid traffic) for a domain
get_organic_keywords
Get keywords a domain ranks for with position, volume, traffic, difficulty
get_traffic_competitors
Find organic search competitors with shared keyword overlap
get_top_pages
Get top pages by organic traffic for a domain
get_historical_rank
Get historical organic traffic and ranking trends over time (monthly)
get_keyword_suggestions
Get Google keyword suggestions with full metrics (volume, KD, CPC, backlinks, SERP info)
get_bing_related_keywords
Get Bing related keywords with metrics
fetch_autocomplete_keywords
Trigger autocomplete keyword generation from Google or Bing (background)
get_autocomplete_keywords
Get autocomplete keywords with metrics from the database
bulk_traffic_analysis
Analyze organic traffic for multiple domains at once
bulk_backlink_analysis
Analyze backlink profiles for multiple URLs/domains at once
submit_url_for_google_indexing
Submit a URL for Google indexing via the Indexing API
check_google_indexing_status
Check a URL's indexing status via the URL Inspection API (returns coverage state, verdict, etc.)
trigger_indexing_action
Run batch inspection scan, trigger internal link crawl, check crawl status, recalculate paths
submit_url_to_index_now
Submit a URL to IndexNow for Bing indexing
check_index_now_status
Check if a URL is indexed by Bing
send_email
Send an email with optional attachments using your configured SMTP credentials
get_robots_compliance
Per-bot robots.txt compliance for a log analysis report — which bots are allowed, how many requests violated a Disallow rule. Uses the Go-side robots.txt matcher (SQL can't evaluate robots.txt rules)
Saved Keywords Tools (manage your keyword lists):
list_saved_keywords_lists
List all keyword lists with keyword counts
create_saved_keywords_list
Create a new keyword list with a name and locale
update_saved_keywords_list
Rename a keyword list
delete_saved_keywords_list
Delete a keyword list and all its keywords
add_keywords_to_list
Add keywords to a list (duplicates are skipped)
remove_keywords_from_list
Remove keywords from a list by their IDs
Organic Rank Tracker Tools (set up trackers, grow tracked keyword sets, and queue runs):
create_organic_rank_tracker_report
Create a rank tracker with keywords, locale, schedule, collection method, device type, optional DataForSEO settings, and optional ranked-page HTML capture. HTML capture is off by default; its scope can include only the target domain or the target and tracked competitors, with a configurable retention period. The first scan runs automatically unless you say otherwise or its schedule window delays it.
update_organic_rank_tracker_report
Update an existing tracker's name, schedule, collection method, business name, include-subdomains setting, DataForSEO settings, or ranked-page HTML capture, scope, and retention. Domain, keywords, locale, and device type cannot be changed. Disabling capture keeps existing HTML history. Some pixel-tracking settings lock after data is collected.
add_organic_rank_tracker_keywords
Add keywords to an existing rank tracker report. A keyword the report already has is not added twice. With a weight, every listed keyword — new or existing — gets that weight. Does NOT rerun the tracker — the AI asks you separately.
update_organic_rank_tracker_keywords
Set the weight of existing keywords in a rank tracker report: a whole number from 0 to 1000, where 100 counts once and 0 (Track only) tracks a keyword without counting it. Keywords are matched by their exact text; any not found are listed back.
remove_organic_rank_tracker_keywords
Remove keywords from a rank tracker report by their text. Destructive — also deletes those keywords' historical positions, PAA appearances, and insights. Keywords not found in the report are reported back but don't cause an error.
run_rank_tracker
Queue a rank tracker run for a report. Background job; consumes DataForSEO credits. Optional force_refresh to rescrape everything.
compare_ranked_page_html
Compare two completed ranked-page HTML captures from the same URL, or explicitly compare an old and replacement URL. Returns paginated line differences, capture metadata, ranked/new/lost states, and affected keywords. It defaults to main content; full HTML is available for metadata and template analysis. It reads existing local captures, does not rescrape, and treats changes as evidence rather than proof of a ranking cause.
LLM Rank Tracker Tools (track brand visibility in AI answers):
create_llm_rank_tracker_report
Create a new LLM rank tracker — brand variants, search terms, AI engines (ChatGPT, ChatGPT Web Search, Google AI Overview, Google AI Mode), locale, and schedule. Auto-runs the first snapshot unless you say otherwise (scheduled reports still auto-start within ~15 minutes; use an on-demand schedule to fully defer). Requires DataForSEO credentials and a configured LLM extraction provider. The first brand variant becomes the report's title
run_llm_rank_tracker
Queue a snapshot run for an existing LLM rank tracker report. Background job; sends every search term to every configured AI engine and consumes DataForSEO credits. One snapshot per day — re-running the same day updates today's snapshot
Review Fetcher Tools (track Google Business Profile reviews):
create_google_business_review_fetch
Start tracking a business's Google reviews — resolves the business via find_google_business (name) or find_google_business_from_maps_url (Google Maps link), sets the initial pull depth, locale, and DataForSEO queue priority, and runs the first fetch unless you say otherwise. Requires DataForSEO credentials. Note: there is no automatic schedule for review fetches — each snapshot is triggered on demand
run_google_business_review_fetch
Trigger a review fetch for a tracked business. Background job; pulls the latest reviews via DataForSEO, deduplicates them, and flags new, missing (removed/filtered by Google), and reinstated reviews. Returns the snapshot ID so progress can be checked
N.A.P Finder Tools (find local citation pages):
run_nap_finder
Create and run a N.A.P Finder report in one step — searches Google for exact-match combinations of your business name, address, and phone number to find the pages that cite them. Each call is a fresh report (reports are one-shot and can't be re-run). Scrapes via DataForSEO, your own IP, or proxies; supports custom search-term template lists, excluded domains, and per-country locales. Results arrive in the background
The AI resolves the business address and phone automatically via find_google_business when you only give a name, and analyzes finished reports through query_database on the nap_finder_items table (e.g. citations per domain, missing listings).
Content Struct Tools (competitor content analysis and AI outlines):
create_content_struct
Create a content analysis report for one or more keywords — scrapes the top Google results and extracts meta titles, descriptions, and heading structures (H1–H4) from up to 20 top-ranking competitor pages per keyword. Multiple keywords are grouped. Scrapes via your own IP (default), proxies, or the DataForSEO SERP API (consumes credits). The analysis runs in the background
generate_content_outline
Generate an AI content outline from a finished content struct report — sends the competitor headings to your chosen AI model (OpenAI, Anthropic, Gemini, OpenRouter, or Ollama) and produces a suggested meta title, meta description, and a full H1–H4 outline. Replaces any existing outline once the new one is ready (a failed generation keeps the old outline); uses your AI provider's API credits
SERP Clustering Tools (group keywords into topic clusters):
create_serp_clustering_report
Create a SERP clustering report and run it — scrapes the Google results for every keyword and groups keywords into clusters when their SERPs share enough URLs (keywords whose results overlap can be targeted by one page). Supports a similarity threshold (3–7 shared results), three clustering algorithms (default / strict / balanced strict), per-country locales, device choice, and an optional target domain for per-cluster rank analysis. Scrapes via your own IP (default), proxies, or the DataForSEO SERP API (consumes credits); with DataForSEO connected it also fetches search volume / CPC / difficulty for the keywords. Runs in the background
run_serp_clustering
Re-run clustering for an existing report — optionally adding new keywords first. Reuses SERP data newer than saved_serp_days instead of re-scraping, and can either re-cluster everything from scratch or keep existing clusters and only distribute new keywords into them. The similarity threshold can change per run; locale, device, and SERP depth stay fixed
Text Analysis Tools (extract entities and topics with NLP):
run_nlp_analysis
Run an NLP entity analysis on pasted text/HTML or on live URLs (scraped first) — extracts the named entities (people, organizations, places, products, concepts) the content is about, with confidence scores, Wikipedia links, and mention counts; TextRazor also extracts topics. Uses whichever NLP provider you configured (TextRazor, Dandelion, or Google NLP — API key required in Settings, uses that provider's quota). Each call creates a new Text Analysis report and runs in the background
Internal Links Tools (find, review and apply internal links — see Internal Links):
get_internal_links_overview
The Internal Links numbers for a property: pages crawled, orphans, priority targets, link text and link cap problems
list_internal_link_opportunities
One Opportunities list (priority targets, orphans, anchors, too many links, duplicate links, or every page), searched, sorted and paged
get_internal_link_source_candidates
The pages that could link to one target page, closest first
estimate_internal_link_run
Quote a Find links run before it starts. Free
run_internal_links
Start Find links for up to 50 target pages. Spends TypeSafe and embedding credit
get_internal_links_run_status
Progress of the latest Find links run
cancel_internal_links_run
Stop the running Find links run. Finished pages keep their suggestions
list_internal_link_suggestions
Suggestions by status and target page, with the sentence, the link text and the reason
review_internal_link_suggestions
Accept, reject or move suggestions back to review, up to 200 at a time
edit_internal_link_anchor
Change a suggestion's link text to other words of the same sentence
apply_internal_links
Write accepted links into your live WordPress site, up to 50 at a time
revert_internal_links
Remove applied links from your live WordPress site
reconcile_internal_links
Settle unconfirmed applies and reverts by reading the pages (Check N unconfirmed)
get_internal_link_rules
The link rules, Advanced settings and your own rules for the AI
save_internal_link_rules
Change some of those rules. The others keep their values
get_internal_link_crawl_status
Progress of the latest link crawl
Automation Tools (manage your workflows):
get_automation_schemas
Get available trigger types, action types, and configs
create_automation
Create a new automation workflow
update_automation
Update or pause/resume an automation
delete_automation
Delete an automation and its history
save_automation_report_mappings
Set which reports trigger an automation
Workspace Tools (manage your workspaces):
create_workspace
Create a new workspace for organizing projects. Name must be unique; new workspaces are not made active by default
update_workspace
Rename a workspace or update its logo URL. Default workspace can be renamed
To list, query, or switch workspaces, the AI uses the existing list_workspaces / set_workspace data tools. Deleting a workspace is done in the desktop app (and is blocked if the workspace still contains data).
SEO Test Tools (manage your SEO experiments):
create_seo_test
Create a new SEO test (split / time_based / url_switch). Validates type-specific fields and fetches baseline metrics from GSC
update_seo_test
Update an existing SEO test's name, description, hypothesis, end_date, or type-specific timing fields (test_type is immutable)
To list, view metrics, or delete tests, the AI uses query_database on the tests, test_pages, and test_metrics tables. Deleting a test is done in the desktop app.
Keyword Insights Tools (analyze ranking behavior):
get_keyword_insight_summary
Get insight counts (trending up/down, pogo sticking, flickering, key events) for a report
The AI can also query the keyword_insights, keyword_insight_histories, ga4_landing_page_metrics, and ga4_property_mappings tables directly via query_database for deeper analysis.
Built-in Prompts
Claude Desktop shows these in the prompt picker — click the slash icon to find them:
Weekly SEO Report
Comprehensive weekly performance report with rankings, GSC data, and recommendations
Keyword Cannibalization
Finds keywords where multiple pages compete for the same query
Weak Pages Analysis
Identifies underperforming pages that need optimization
Ranking Trends
Analyzes ranking changes over time with winners and losers
Content Gap Analysis
Finds content opportunities from Search Console data
Local SEO Report
Google Business rank tracking performance report
SERP Landscape
Competitive analysis of SERP features and competitors
Ranked Page HTML Changes
Compares stored page captures and evaluates changes around new, lost, or moved pages
Client Report
Professional, client-ready report in non-technical language
Example Prompts
Here are some prompts you can try right away. Click each category to expand.
Workspaces
If you use multiple workspaces in SEO Utils, the MCP server defaults to your currently active workspace. You can ask the AI to list, switch, create, or rename workspaces:
"List my workspaces"
"Switch to the Client Projects workspace"
"Create a new workspace called Client A"
"Rename workspace 3 to E-commerce Projects"
"Update my Personal workspace — change the logo to https://example.com/logo.png"
After switching, all subsequent queries will be scoped to that workspace. New workspaces are not made active automatically — switch to them with set_workspace (or in the workspace switcher in the app). Workspace deletion is only available in the desktop app and is blocked if the workspace still contains any data.
Working Across Client Workspaces
A switch lasts only until your AI app reconnects to SEO Utils. Apps reconnect when they restart, and remote connections can reconnect on their own. After a reconnect, the AI is back in the workspace that is active in the desktop app.
If you work across several client workspaces, choose the workspace in a way that survives reconnects:
Name the workspace in the request
"Create a rank tracker for example.com in the Client A workspace"
That request only
Switch the workspace
"Switch to the Client A workspace"
Until the AI app reconnects
Set a workspace on the connection
The X-SEO-Utils-Workspace header (see below)
Every request on that connection, also after reconnects
When more than one applies, the first row in the table wins. When none applies, the AI uses the workspace that is active in the desktop app.
If the chosen workspace does not exist (for example, it was deleted), SEO Utils refuses the request and runs nothing. It never falls back to another workspace. Choose an existing workspace and ask again.
Data Accuracy
The MCP server is designed to return the same numbers you see in the app. Behind the scenes, it automatically handles:
Timezone conversion — Google Search Console uses Pacific Time, while other tools use your server's timezone. The MCP applies the correct offsets automatically.
Default filters — Filters like
search_type = 'web'for GSC data are applied automatically. You don't need to specify them.Smart table selection — When you ask about total clicks over time, the MCP uses the aggregate table (accurate totals). When you ask about specific queries, it uses the query-level table. Same logic as the app.
Rank tracker specifics — NULL positions correctly handled as "not ranking," local pack results prioritized over organic, and average rank calculations match the app exactly.
You just ask your question in plain English — the MCP handles all the complexity.
Security
Network
Server binds to 127.0.0.1 only — not accessible from the internet
Authentication
Bearer token required for all connections
Data access
SQL queries are read-only. A small set of write tools can: create/update/delete saved keyword lists, add keywords to rank tracker reports, create LLM rank tracker reports and review fetches, queue tracker and review-fetch runs, run N.A.P Finder citation searches, create content structs and generate AI content outlines, create and run SERP clustering reports, run NLP text analyses, create/update workspaces, delete GMB rank tracker reports, manage automations and GMB report groups, and review, apply and revert internal links on your WordPress site
Query safety
Only SELECT statements allowed, auto-limited to 1,000 rows
Token storage
Auth token file has 0600 permissions (owner-read only)
Token rotation
Rotate the auth token anytime from Settings — the old token stops working immediately, no restart needed
Your SEO data stays on your machine. The MCP server runs locally and the AI connects to it directly — no data is sent to any third-party server.
Rotating the Auth Token
If your token was exposed — shared in a screenshot, a screen recording, or a config file — rotate it to generate a new one and lock out anyone still holding the old token.
Click "Rotate token"
A confirmation dialog explains the impact: the current token is invalidated immediately, and apps connected by URL with the token, and Claude Desktop set up by an earlier SEO Utils version, lose access until you update them. Click "Rotate" to confirm.

Reconnect Your AI Clients
The new token takes effect instantly — no restart of SEO Utils needed.
Apps added with a button or command in Connect an AI app (Claude Desktop, Claude Code, Codex, Cursor, VS Code, OpenClaw, Grok Build, Antigravity, Perplexity) — nothing to do: they read the current token from SEO Utils
Apps connected by URL with the token (n8n, Make, claude.ai, other HTTP clients) — copy the new token from Connect an AI app → Other MCP apps and replace the old one
Connections made with SEO Utils 2.5.0 or earlier — install again from Connect an AI app
Rotation cannot be undone. Any client still configured with the old token — including automations on n8n, Make.com, or a VPS — will get authentication errors until you update it with the new token.
Frequently Asked Questions
Troubleshooting
Last updated