πŸ€–MCP Server (AI Integration)

The MCP Server lets you connect AI assistants like Claude Desktop, Claude Code, 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.

MCP Server settings in SEO Utils

MCP (Model Context Protocol) is an open standard that lets AI assistants connect to external data sources. SEO Utils runs an MCP server locally on your machine β€” your data never leaves your computer.

Example Reports Generated by MCP

These reports were generated entirely by the MCP Server β€” one prompt, zero manual work:

What Can You Do With It?

Use Case
Example Prompt

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"

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"

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?"

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 "Rename my Personal workspace to Side Projects"

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"

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)

  • For Claude Desktop: Node.js installed (used by the mcp-remote bridge)

Setting Up the MCP Server

1

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.

Purchase MCP Access button in Settings

Alternatively, you can purchase MCP access directly from your browser at app.seoutils.app/mcp/purchase β€” enter your license key and complete the checkout.

MCP access is a one-time purchase with unlimited updates β€” no subscription. It's tied to your license key, works on all devices associated with your license, and cannot be transferred. An active (non-expired) SEO Utils license is required.

2

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.

Click Refresh to verify your purchase
3

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).

MCP Server enabled and running
4

Connect to Claude

Choose one of the three connection methods described below.

Connecting to AI Assistants

Pick the method that matches your setup:

Method
Best for
Requires Node.js?
Requires public URL?

Claude Desktop β€” Auto Install

Most users

Yes

No

Claude Code

Developers

No

No

OpenAI Codex (App, CLI, IDE)

Developers

No

No

Google Antigravity

Developers

Yes

No

OpenClaw

Self-hosted AI users

Yes

No

Perplexity (Mac)

Perplexity users

Yes

No

ChatGPT Desktop

ChatGPT users

No

No (with tunnel) or Yes

Claude Web / ChatGPT Web / Perplexity (Remote) / n8n / Make.com

Cloud tools, VPS users

No

Yes (HTTPS)

Claude Code

No Node.js required β€” Claude Code connects directly to the MCP server over HTTP.

Option A: One-line command

Copy the token from the MCP Server settings (Manual Config tab), then run:

Option B: Add to .mcp.json

  1. In the MCP Server settings, click the "Manual Config" tab

  2. Click "Copy Config" to copy the JSON configuration

  3. Add it to your project's .mcp.json:

The actual token is included in the copied config β€” you don't need to fill it in manually.

Option C: Import from Claude Desktop (if already installed there)

This imports all MCP servers from your Claude Desktop config, including SEO Utils. Mac and WSL only.

OpenAI Codex (Desktop App, CLI & IDE Extension)

No Node.js required β€” Codex connects to HTTP MCP servers directly with bearer token auth. Settings are shared across the Codex desktop app, CLI, and IDE extension because they all read the same config.toml.

Option A: Codex Desktop App (UI)

  1. Open the Codex app and go to Settings β†’ Integrations & MCP

  2. Click Add MCP server and enter:

    • Name: seo-utils

    • URL: http://localhost:19515/mcp

    • Bearer token: paste the token from SEO Utils Settings β†’ MCP Server β†’ Manual Config

  3. Save β€” the connection becomes available immediately. No restart needed.

The desktop app writes these settings to ~/.codex/config.toml, so the same server automatically becomes available in the Codex CLI and IDE extension too.

Option B: Codex CLI or IDE Extension (config.toml)

  1. Open (or create) the Codex config file:

    • macOS / Linux: ~/.codex/config.toml

    • Windows: %USERPROFILE%\.codex\config.toml

    In the IDE extension, you can open it from MCP settings β†’ Open config.toml in the gear menu.

  2. Add the SEO Utils server:

  1. Export the token in your shell. Copy the token from SEO Utils Settings β†’ MCP Server β†’ Manual Config, then run:

On macOS / Linux (add to ~/.zshrc or ~/.bashrc to persist):

On Windows (PowerShell, persist with setx):

  1. Run codex and use /mcp in the TUI to confirm SEO Utils is connected.

For trusted projects, you can put the [mcp_servers.seo-utils] block in .codex/config.toml at your project root instead of the global ~/.codex/config.toml. Config changes are picked up automatically β€” no restart needed.

Option C: stdio bridge (requires Node.js)

If you prefer stdio over HTTP, use the same mcp-remote bridge as Claude Desktop:

See the Codex MCP docs for additional options like startup_timeout_sec, enabled_tools, and default_tools_approval_mode.

Google Antigravity

Requires Node.js β€” Antigravity uses mcp_config.json with the same bridge approach as Claude Desktop.

  1. Open Antigravity β†’ click "..." in the Agent Panel β†’ MCP Servers

  2. Click Manage MCP Servers β†’ Edit configuration to open mcp_config.json

  3. Add the SEO Utils server:

macOS / Linux:

Windows:

Replace YOUR_TOKEN_HERE with the token from SEO Utils Settings β†’ MCP Server β†’ Manual Config.

  1. Save the file and restart Antigravity

  2. Ask the agent "What tools do you have access to?" to confirm the connection

Requires Node.js installed.

OpenClaw

Requires Node.js β€” OpenClaw supports MCP servers natively via openclaw.json.

Add the SEO Utils MCP server to your openclaw.json config:

macOS / Linux:

Windows:

Replace YOUR_TOKEN_HERE with the token from SEO Utils Settings β†’ MCP Server β†’ Manual Config.

Restart OpenClaw and the MCP tools will be available to your agents.

Requires Node.js installed.

ChatGPT Desktop

Via Developer Mode β€” ChatGPT Desktop supports MCP servers through Developer Mode (beta). It requires an HTTPS URL, so you'll need a tunnel for local connections.

  1. Open ChatGPT Desktop β†’ Settings β†’ Advanced settings β†’ Enable Developer Mode

  2. Install Cloudflare Tunnel (free, no account needed):

    • macOS: brew install cloudflare/cloudflare/cloudflared

    • Windows: Download from cloudflare.com and run the installer

    • Linux: wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && sudo dpkg -i cloudflared-linux-amd64.deb

  3. Start the tunnel to expose your local MCP server:

  1. Copy the generated HTTPS URL from the terminal output (e.g., https://xxx.trycloudflare.com)

  2. In ChatGPT, go to Settings β†’ Connectors β†’ Create

  3. Enter the connector URL: https://xxx.trycloudflare.com/mcp

  4. Add the auth header: Authorization: Bearer YOUR_TOKEN_HERE

Copy the token from SEO Utils Settings β†’ MCP Server β†’ Manual Config.

Developer Mode requires ChatGPT Plus, Pro, or Enterprise plan.

Perplexity (Mac β€” Local)

Requires Node.js β€” Perplexity Mac app supports local MCP servers via a helper app.

  1. Open Perplexity β†’ Settings β†’ Connectors

  2. Install the PerplexityXPC helper when prompted

  3. Click Add Connector β†’ Simple tab

  4. Set Server Name to SEO Utils

  5. Set the Command to:

Replace YOUR_TOKEN_HERE with the token from SEO Utils Settings β†’ MCP Server β†’ Manual Config.

  1. Click Save and wait for status to show Running

  2. Go to Perplexity homepage and toggle your MCP on under Sources

Requires Node.js installed (nodejs.org) and a Perplexity paid plan.

Claude Web / Perplexity (Remote) / n8n / Make.com

Requires a publicly accessible HTTPS URL

Claude Web (claude.ai), Cowork (web version), n8n (cloud), and Make.com cannot connect to localhost. You need to make your MCP server accessible over the internet.

Option A: Cloudflare Tunnel (easiest, free, no VPS needed)

  1. Install cloudflared:

    • macOS: brew install cloudflare/cloudflare/cloudflared

    • Windows: Download from cloudflare.com and run the installer

    • Linux: wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && sudo dpkg -i cloudflared-linux-amd64.deb

  2. Run: cloudflared tunnel --url http://localhost:19515

  3. Copy the generated https://xxx.trycloudflare.com URL

  4. In Claude.ai, go to Settings β†’ Connectors β†’ Add custom connector and enter the URL with /mcp appended

Option B: VPS with reverse proxy

If you're running SEO Utils on a VPS:

  1. Set up a reverse proxy (Nginx on Linux, Caddy on any OS) with HTTPS pointing to 127.0.0.1:19515

  2. In Claude.ai, go to Settings β†’ Connectors β†’ Add custom connector

  3. Enter your public URL (e.g., https://mcp.yourdomain.com/mcp)

Option C: Self-hosted n8n on the same machine

If n8n runs on the same machine as SEO Utils, just use http://localhost:19515/mcp directly β€” no public URL or tunnel needed.

Custom connectors on Claude.ai require a Pro or Max plan.

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.

Claude Desktop / Cowork
  1. In Claude Desktop, go to Customize β†’ Skills

  2. Click "+" β†’ "Upload a skill"

  3. Upload the downloaded ZIP file

  4. Toggle the skill on

Claude Code
OpenAI Codex (Desktop App, CLI & IDE Extension)

Codex follows the open Agent Skills standard. Copy the skill to your user-level skills directory:

Or for workspace-only: copy to <your-project>/.agents/skills/seo-utils-mcp-guide/SKILL.md

The skill is picked up automatically by the Codex desktop app, CLI, and IDE extension β€” they all scan the same location.

ChatGPT
  1. In ChatGPT, go to Customize β†’ Skills

  2. Click "New skill" β†’ "Upload from your computer"

  3. Upload the downloaded ZIP file

Perplexity
  1. Download the Skill.md file

  2. In Perplexity Computer, go to the My Skills tab

  3. Upload the Skill.md file

Google Antigravity

Copy the skill to your global skills directory:

Or for workspace-only: copy to <your-project>/.agents/skills/seo-utils-mcp-guide/SKILL.md

OpenClaw

Copy the skill to your global skills directory:

Or for workspace-only: copy to <your-project>/skills/seo-utils-mcp-guide/SKILL.md

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.

Assign SEO tasks from your phone using Dispatch in Cowork

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.

Available Tools

The MCP server exposes the following tools that the AI uses automatically:

Data Tools (read your existing SEO data):

Tool
Description

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

set_workspace

Switches to a different workspace

Action Tools (fetch live data from APIs):

Tool
Description

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)

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)

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):

Tool
Description

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):

Tool
Description

create_organic_rank_tracker_report

Create a new rank tracker report for a domain β€” full setup including keywords, locale, schedule, scrape method, device type, and DFS-specific pixel/PAA options. Auto-runs the first scan unless you say otherwise.

update_organic_rank_tracker_report

Partially update an existing rank tracker report β€” change name, schedule, scrape method, business name, include-subdomains, or DFS-only settings. Domain, keywords, locale, and device type are immutable (create a new report to change those). Pixel-tracking settings lock once a snapshot has captured pixel data. Toggling include_subdomains triggers an async resync.

add_organic_rank_tracker_keywords

Add keywords to an existing rank tracker report. Duplicates are silently skipped. Does NOT rerun the tracker β€” the AI asks you separately.

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.

Automation Tools (manage your workflows):

Tool
Description

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):

Tool
Description

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):

Tool
Description

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):

Tool
Description

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.

SQL queries are read-only β€” the AI cannot modify your data via SQL. Action tools fetch data from external APIs (DataForSEO) and may incur API costs. Saved Keywords and Organic Rank Tracker tools can create, update, and delete keyword lists, add or remove keywords in rank tracker reports, and queue tracker runs on your behalf. Removing rank tracker keywords also deletes their historical positions and insights β€” there is no undo. Running the tracker consumes DataForSEO credits.

Built-in Prompts

Claude Desktop shows these in the prompt picker β€” click the slash icon to find them:

Prompt
What It Does

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

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.

Tip for GSC queries: When asking about your own site's search performance, include "in GSC" or "from my Search Console data" in your prompt. This tells the AI to query your local Google Search Console data instead of fetching third-party estimates.

πŸ“Š Reporting & Charts
  • "Create a dashboard to report all SEO metrics of tuikhoeconban.com" (Work with Claude Cowork Live Artifact to create live SEO dashboard.)

  • "Pull my Google Search Console data for the last 30 days. Show me a line chart of daily clicks and impressions over time. Also show a table of the top 10 queries by clicks."

  • "Get my organic rank tracker data for example.com. Create a pie chart showing the ranking distribution: how many keywords are on page 1 (positions 1-10), page 2 (11-20), page 3 (21-30), and beyond."

  • "Pull my Google Business rank tracker data for My Business Name. Create a heatmap or grid visualization showing my ranking positions across different geographic points."

  • "Compare my Google Search Console query performance between the last 7 days and the previous 7 days. Find the top 10 queries that gained the most clicks and the top 10 that lost the most."

  • "Create a comprehensive SEO dashboard for example.com with: 1) A line chart of GSC clicks over the last 30 days, 2) Current organic rank distribution as a donut chart, 3) A table of top 10 pages by impressions."

πŸ” SEO Analysis
  • "Find pages on my site that rank on positions 11-20 (page 2) with more than 100 impressions. These are quick-win opportunities to push to page 1."

  • "Find pages with high impressions but low CTR β€” the title or description probably needs work."

  • "Which keywords have multiple pages competing for the same position? Show me the cannibalization issues."

  • "Find queries I'm appearing for in Google but don't have a dedicated page targeting them."

πŸ—ΊοΈ Local SEO
  • "Show me my Google Business rank tracking data. Create a summary of how many grid points I rank in top 3, top 10, and not ranking."

  • "Show me the ranking trend for 'hot pot' in my GMB report #7"

  • "Compare my local rankings between this week and last week. Which keywords improved?"

  • "List all my GMB rank tracker reports with their keywords and latest snapshot dates"

  • "Show me the demographics around my business and correlate with my local rankings β€” do I rank better in high-income or high-density areas?"

  • "Show me the multi-location dashboard for Haidilao Hot Pot across all locations"

  • "Create a report group for all my Haidilao reports so I can see combined rankings"

  • "What's my visibility score for Haidilao across Bellevue and Seattle? Compare vs 30 days ago"

  • "Which location has the best local rankings for 'hot pot'?"

πŸ“ Create & Update GMB Rank Trackers
  • "Create a GMB rank tracker for Haidilao Hot Pot in Bellevue, WA tracking 'hot pot bellevue', 'best chinese bellevue', and 'haidilao'. Use a 5x5 square grid with 500m radius, run weekly on Mondays 9-11am Pacific."

  • "Set up a circle 7x7 GMB tracker for my dental clinic at 100 Park Ave, New York with 1 mile radius, tracking 'dentist near me', 'emergency dentist nyc', and 'tooth cleaning manhattan'. Run once now so I can see the baseline."

  • "Track Pho Bac Sup Shop in Seattle for 'pho near me' and 'best pho seattle' β€” square 7x7, 800m radius, weekly Mondays at 8am Pacific."

  • "Create a GMB tracker for Joe's Pizza in NYC simulating searches from Brooklyn instead of Manhattan, tracking 'pizza near me' and 'best slice brooklyn'."

  • "I have 9 specific tracking points for my market research project β€” coordinates: [{lat: 47.61, lng: -122.20}, {lat: 47.62, lng: -122.20}, ...]. Create a GMB report for Haidilao Hot Pot Bellevue using those exact points and track 'coffee shop'."

  • "Update my Haidilao GMB report β€” bump it from 5x5 to 7x7 grid and change the schedule to twice-per-month on the 1st at 8am Pacific."

  • "Disable the daily run schedule on GMB report #7 and switch it to a one-time manual tracker."

  • "Rebrand the export header on GMB report #12 to 'Q1 Local SEO β€” Acme Dental' and set the comparison period to 30 days."

  • "Run a fresh snapshot for GMB report #7 right now β€” I want to see today's rankings without waiting for the schedule."

🌐 Create & Update Organic Rank Trackers
  • "Set up an organic rank tracker for example.com in the US English, tracking 'best seo tool', 'seo software', and 'free seo audit'. Use DataForSEO, desktop, weekly schedule."

  • "Track moz.com on mobile in the UK for 'keyword research', 'local seo', and 'backlink checker' β€” DataForSEO, weekly, start scanning right away."

  • "Create a rank tracker for mycompany.io scraping from my own IP with 5-second delays. Daily schedule. Keywords: 'widget pricing', 'widget reviews', 'best widgets 2026'. Don't start scanning yet β€” I want to review settings first."

  • "Set up tracking for a French SaaS β€” saas-fr.com in France French, tracking 'logiciel de gestion', 'outil de productivitΓ©', 'crm franΓ§ais'. DataForSEO, weekly."

  • "Make a rank tracker for laravel.com in the US that includes subdomains (so docs.laravel.com counts as laravel.com). DataForSEO, desktop, weekly. Keywords: 'php framework', 'laravel tutorial', 'best php frameworks'."

  • "Change the schedule on rank tracker #19 from weekly to daily."

  • "Rename rank tracker #22 to 'Moz.com β€” Q1 Tracking' and turn on include subdomains."

  • "Switch rank tracker #23 from own-IP scraping to DataForSEO and bump priority to 2 for faster turnaround."

  • "Disable pixel tracking on report #20." (Will error if a snapshot has already captured pixel data β€” pixel settings are immutable after data is collected, by design.)

πŸ”‘ Keyword Research
  • "Check keyword metrics for: seo tools, rank tracker, keyword research, backlink checker"

  • "Check keyword metrics for these keywords in Vietnam: cΓ΄ng cα»₯ seo, phΓ’n tΓ­ch backlink"

  • "What's the search volume and difficulty for 'best seo tools 2026'?"

🎯 Gap Analysis
  • "Find keywords that ahrefs.com and semrush.com rank for but seoutils.app doesn't"

  • "What content opportunities am I missing compared to my top 3 competitors?"

  • "Find domains that link to ahrefs.com but not seoutils.app"

  • "Show me the backlink gap between seoutils.app and its top competitors: semrush.com, moz.com"

  • "Find high-volume keywords (1000+ searches) that competitors rank for in the US but I don't"

πŸ“Š Traffic Analytics
  • "Show me the traffic overview for laravel.com"

  • "What are the top organic keywords for laravel.com in the US?"

  • "Who are the traffic competitors for seoutils.app?"

  • "What are the top pages by traffic for laravel.com?"

  • "Show me only informational keywords that laravel.com ranks for"

  • "What keywords does laravel.com rank for in positions 1-3 with more than 1000 monthly searches?"

  • "Show me the organic traffic trend for laravel.com over the past 5 years. Draw a chart."

🏘️ Demographics (US, UK, Australia & Canada)
  • "Show me the demographics around my GMB report #7 business"

  • "What's the population density and median income near Haidilao Hot Pot Bellevue?"

  • "Compare the demographics data with my local rankings β€” do I rank better in high-income or low-income areas?"

  • "Show me census data within 3 miles of coordinates 47.61, -122.20"

  • "Show me demographics around my business in London / Sydney / Toronto"

πŸ”Ž GSC Insights & Mentions
  • "Find keyword cannibalization issues for example.com in GSC"

  • "Using my GSC data, what percentage of queries are branded vs non-branded for example.com?"

  • "Show me my top trending queries in GSC this month vs last month"

  • "What are my optimization opportunities in GSC β€” queries I rank for but don't mention in page titles?"

  • "Show me GSC traffic by country for my site β€” which countries send the most clicks?"

  • "Break down my GSC queries by position range: how many rank 1-3, 4-10, 11-20, and 21+?"

  • "Which queries in GSC have zero mentions in page titles but high impressions?"

  • "Show me additional traffic sources beyond web search in my Search Console data"

πŸ”— URL Indexing
  • "How many of my URLs are indexed vs not indexed? Show the breakdown by coverage state."

  • "Submit this URL for Google indexing: https://example.com/new-page"

  • "Check the indexing status of https://example.com/page using the URL Inspection API"

  • "Show me all URLs that have been crawled but not indexed β€” what's causing them to be rejected?"

  • "Which directories on my site have the worst indexing rate?"

  • "Find orphan pages β€” URLs with zero internal links that aren't indexed"

  • "Show me the top 10 pages by internal inlink count and their indexing status"

  • "Run an inspection scan for my site to update all URL statuses"

  • "Start an internal link crawl for my site"

  • "Which URLs have had their coverage state change in the last 7 days?"

  • "Show me pages that went from 'Submitted and indexed' to something else recently"

  • "Submit https://example.com/updated-page to IndexNow for Bing"

πŸ“ Content Struct (Content Brief)
  • "Show me the content brief for 'keto' β€” report #189"

  • "Write a 2000-word article using the content outline from content struct report #191"

  • "Show me the AI-generated outline and suggested meta title/description for report #193"

  • "Which H2 headings appear most frequently across competitor pages for 'hot pot' in report #191?"

  • "Write an SEO-optimized blog post following the content brief in report #189."

  • "Compare the heading structure of the top 5 competitor pages for 'keto' in report #189"

πŸ“ Text Analysis (NLP)
  • "Show me all my NLP analysis reports"

  • "What are the top entities found in my TextRazor analysis report #19?"

  • "Which entities appear most frequently across all items in report #21?"

  • "Compare the entities found by GoogleNLP vs TextRazor for the same URLs"

  • "Show me all entities with confidence score above 0.8 in report #20"

  • "What topics were identified in my TextRazor report? Show them sorted by score"

πŸ“Š Bulk Analysis
  • "Compare organic traffic for laravel.com, symfony.com, and codeigniter.com"

  • "Show me the backlink profiles for seoutils.app, ahrefs.com, and semrush.com"

  • "Which of these domains has the highest domain rank: moz.com, majestic.com, semrush.com?"

  • "Analyze traffic and backlinks for my top 5 competitors"

  • "Compare referring domains count for example.com vs example.org"

πŸ“ NAP Finder
  • "List all my NAP Finder reports"

  • "Which domains have the most NAP citations for Monsoon Seattle?"

  • "Show me all NAP citations found on yelp.com for my business"

  • "What search terms found the most results in NAP Finder report #5?"

  • "Find all NAP citations ranking in position 1-3 for monsoon seattle"

  • "Compare NAP citations between report #5 and report #6 β€” which domains appear in both?"

πŸ”¬ Keyword Explorer
  • "What are the keyword suggestions for 'keto diet' in the US?"

  • "Show me Bing related keywords for 'coffee shops' sorted by search volume"

  • "Find keyword suggestions for 'seo tools' with search volume over 1000 and keyword difficulty under 40"

  • "Get keyword suggestions for 'best laptops' β€” only show commercial and transactional intent keywords"

  • "Fetch autocomplete keywords for 'seo tools' from Google"

  • "Show me the autocomplete keywords for 'keto' from both Google and Bing"

  • "What's the search volume, keyword difficulty, and CPC for 'keto diet'?"

πŸ“‹ Saved Keywords
  • "Show me all my saved keyword lists"

  • "Create a new keyword list called 'Competitor Keywords' for the US market"

  • "Add these keywords to my 'Competitor Keywords' list: seo tools, keyword research, backlink checker"

  • "Create a keyword list called 'Vietnam SEO' for Vietnam in Vietnamese"

  • "Rename my 'Old Keywords' list to 'Archive - Q1 2026'"

  • "Delete the 'Test Keywords' list"

  • "How many keywords are in each of my saved keyword lists?"

πŸ“ˆ Organic Rank Tracker
  • "Add these keywords to my rank tracker for example.com: seo audit, technical seo, on-page seo"

  • "Take the top 20 keywords from the content gap report between example.com and competitor.com and add them to my rank tracker for example.com"

  • "Pull the highest-converting GSC queries from the last 90 days that I'm not yet tracking, and add them to my example.com rank tracker"

  • "Add 'black friday deals, cyber monday sale' to my shop.com tracker and rerun it right now"

  • "Remove these keywords from my example.com rank tracker: outdated keyword, irrelevant term, typo'd kw"

  • "Find every keyword in my shop.com tracker that hasn't ranked in the last 60 days and remove them"

  • "Clean up my rank tracker β€” remove all keywords containing the word 'test'"

  • "Force-refresh my rank tracker for example.com β€” I want fresh SERPs for every keyword"

  • "Rerun the rank tracker for laravel.com"

🌐 SERP Analysis
  • "What's ranking for 'seo tools' in Google?"

  • "Fetch SERP data for: rank tracker, keyword research tool, seo software"

  • "Show me the top 10 Google results for 'best seo tools' in the US"

  • "What pages are ranking for 'local seo' in the UK?"

πŸ€– LLM Rank Tracker
  • "Show me all my LLM rank tracker reports"

  • "How is my brand mentioned across AI search engines like ChatGPT and Perplexity?"

  • "Which search terms trigger the most AI citations for my brand?"

  • "Compare my LLM visibility across different AI engines β€” ChatGPT vs Perplexity vs Gemini"

  • "Show me the trend of my brand mentions in AI responses over the last month"

πŸ“„ Log Analysis
  • "Show me all my log analysis reports"

  • "Which pages get the most Googlebot crawls in my latest log analysis?"

  • "Show me pages with 404 errors that Googlebot is trying to crawl"

  • "What's the crawl frequency breakdown by HTTP status code?"

πŸ€– AI Log Analysis (AEO / GEO)
  • "Is GPTBot violating my robots.txt in my latest log analysis report?"

  • "Which AI bots are ignoring my Disallow rules β€” filter to violations > 0"

  • "Which pages are Perplexity and ChatGPT-User fetching most this month?"

  • "What questions are AI engines asking about my site? Group by extracted_query"

  • "How is AI traffic trending vs search traffic over the last 30 days?"

  • "Which pages has Googlebot crawled recently but AI bots haven't visited in over a week?"

  • "What's the error rate per AI bot β€” which bots are getting 4xx/5xx responses most?"

πŸ§ͺ SEO Tests
  • "Show me all my SEO tests and their current status"

  • "How is my SEO test #5 performing β€” are clicks and impressions improving?"

  • "Compare the before and after metrics for my latest completed SEO test"

  • "Create a time-based SEO test on example.com starting today: hypothesis is rewriting the H1 on /blog/seo-guide will improve CTR. Change implemented date is today."

  • "Create a 50/50 split test on shop.example.com comparing /products/a, /products/b (control) vs /products/c, /products/d (variant), starting next Monday"

  • "Create a URL switch test on example.com alternating /pricing with /pricing-v2 every 7 days, starting today, ending in 60 days"

  • "Update SEO test #7 β€” extend the end date to 2026-08-01 and update the hypothesis to mention the new schema markup"

  • "Update test #3 to clear the end date so it runs indefinitely"

πŸ“§ Send Email
  • "Send an email to [email protected] with subject 'Weekly SEO Report' and a summary of this week's ranking changes"

  • "Email me the keyword cannibalization analysis for my site"

  • "Send the content brief for 'keto diet' to my team at [email protected]"

  • "Compose and send an email to [email protected] with the top 10 ranking improvements this month"

⚑ Automations
  • "Show me all my automations"

  • "What trigger types and action types are available for automations?"

  • "Create an automation that exports a PDF report when my organic rank tracker snapshot completes"

  • "Create an automation that runs when a content struct outline is generated. It should: 1) Export the outline as markdown to my Downloads folder, 2) Send an email to [email protected] with subject 'New Content Brief: [keyword name]' and body showing the meta title, meta description, and number of headings, with the markdown file attached, 3) Send a GET webhook to https://n8n.example.com/webhook/content-brief"

  • "Set up an automation to send an email with the rank tracker PDF attached when a snapshot finishes"

  • "Create a webhook automation that posts rank tracker data to my n8n workflow when a snapshot completes"

  • "Pause automation #1"

  • "Delete the 'Test' automation"

πŸ”¬ Keyword Insights
  • "Show me the keyword insight summary for my example.com rank tracker report"

  • "Which keywords are trending up in my rank tracker report #20?"

  • "Are any of my keywords pogo sticking or flickering? Explain what that means."

  • "Show me the insight history β€” which keywords recently became unstable?"

  • "How many of my keywords have enough data for trend analysis?"

πŸ“ˆ Rankings + GA4 Conversions (SEO Utils exclusive)

These prompts combine ranking data with Google Analytics 4 conversion metrics β€” something no standalone GA4 or rank tracker tool can do on its own. Note: this shows correlation (keyword ranking changes on pages that also saw conversion changes), not direct causation.

  • "Show me keywords that improved in ranking on pages that also saw increased conversions. I want to see the position change alongside the page's conversion count."

  • "Show me pages that generated conversions from organic search, and for each page, show me which keywords rank on that page and their current position."

  • "Which pages generate the most organic revenue in GA4, and what keywords am I tracking on those pages?"

  • "Are any of my pogo-sticking or flickering keywords on pages that generate conversions? These pages need stabilization first."

  • "Give me a complete SEO health report for example.com: how many keywords are trending up vs down, which have unstable rankings, which pages have the most conversions, and what's my total organic revenue from GA4."

πŸ—‚οΈ Workspaces
  • "List my workspaces"

  • "Create a new workspace called Client A"

  • "Create a workspace named E-commerce Projects with logo https://example.com/logo.png"

  • "Rename workspace 3 to Personal Sites"

  • "Update the Side Projects workspace β€” clear the logo"

  • "Which workspace am I in right now? Switch me to Client A and show all the rank tracker reports in that workspace."

πŸ“ Client & Comprehensive Reports
  • "Generate a professional, client-ready SEO report for example.com for the last 30 days. Use clear, non-technical language suitable for stakeholders."

  • "Create a comprehensive SEO health report for example.com. Include: GSC performance summary, top queries, optimization opportunities, cannibalization issues, and a weekly clicks trend chart."

  • "Give me a complete SEO & backlink report for example.com β€” include traffic overview, top keywords, top pages, top competitors, backlink profile, and combined trends. Save it as an interactive HTML dashboard."

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.

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

Aspect
Detail

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, queue tracker runs, create/update workspaces, and manage automations and GMB report groups

Query safety

Only SELECT statements allowed, auto-limited to 1,000 rows

Token storage

Auth token file has 0600 permissions (owner-read only)

Frequently Asked Questions

Is this self-hosted?

Yes! The MCP server runs entirely inside the SEO Utils app on your own machine. Your data stays local β€” nothing is sent to any third-party server. It works on macOS, Windows, and Linux (including VPS).

What about security? Is my desktop accessible from the internet?

No. The MCP server binds to 127.0.0.1 (localhost) only β€” it is not accessible from the internet. Only applications running on your own machine can connect to it, and they need a valid Bearer token to authenticate. Your data never leaves your computer.

Can I run this on a VPS for 24/7 automations?

Yes! You can install SEO Utils on a VPS (Linux is supported) and keep it running 24/7. This is great for automations with n8n, Make, etc. β€” they won't fail when your local machine is turned off. If you need external access from the internet, put SEO Utils behind a reverse proxy (like Nginx) with HTTPS. The built-in Bearer token auth ensures only authorized clients can connect.

Which AI clients are supported?

Any MCP-compatible client works, including:

  • Claude Desktop / Cowork (desktop) β€” via Auto Install or manual config (local connection)

  • Claude Code β€” via .mcp.json config (local connection)

  • OpenAI Codex (App, CLI, IDE extension) β€” via config.toml or the desktop app's Settings β†’ Integrations & MCP (local connection, shared config)

  • Google Antigravity β€” via mcp_config.json (local connection, requires Node.js)

  • OpenClaw β€” via openclaw.json (local connection, requires Node.js)

  • ChatGPT Desktop β€” via Developer Mode + tunnel or public URL (Plus/Pro/Enterprise)

  • Perplexity (Mac) β€” via local MCP connector (macOS only, paid plan)

  • Claude Web (claude.ai) / Cowork (web) β€” via custom connector (requires public URL, Pro/Max plan)

  • Perplexity (Remote) β€” via remote connector (requires public URL, paid plan)

  • n8n, Make, Zapier β€” via the HTTP API (requires public URL or same machine)

  • Any MCP client β€” the server uses the standard MCP protocol over HTTP

Can the AI modify or delete my data?

SQL queries are strictly read-only β€” only SELECT statements are allowed. However, a small set of action tools can write on your behalf: Saved Keywords tools (create/rename/delete lists, add/remove keywords), Organic Rank Tracker tools (create/update reports, add or remove keywords, queue a tracker run β€” which consumes DataForSEO credits; removing a keyword also deletes its historical positions and insights), Workspace tools (create or rename workspaces), GMB report groups (create/delete), and Automations (create/update/delete). Workspace deletion is intentionally not exposed over MCP β€” that operation lives in the desktop app. Everything else (GSC, backlinks, snapshots, settings) cannot be modified by the AI.

The AI uses the wrong tool for GSC queries

When asking about your own site's search performance (cannibalization, trending queries, weak pages, etc.), include "in GSC" or "from my Search Console data" in your prompt. Without this hint, the AI may fetch third-party estimated data from DataForSEO instead of querying your actual Google Search Console data stored locally.

Example: Instead of "Find cannibalization issues for example.com", say "Find cannibalization issues for example.com in GSC".

Troubleshooting

MCP server won't start

Make sure you have a valid license key and have purchased MCP access. Check that port 19515 is not being used by another application.

Claude Desktop shows "Server disconnected" or "failed"

This usually means one of these:

  1. SEO Utils is not running β€” Open the app and make sure the MCP server is enabled (status shows "Running")

  2. Node.js is not installed β€” The Auto Install method requires Node.js. Download it from nodejs.org (LTS version), then restart Claude Desktop

  3. Windows path issue β€” If you see 'C:\Program' is not recognized in the logs, update to the latest SEO Utils version which fixes this. Or reinstall by clicking "Install in Claude Desktop" again

  4. Didn't restart Claude Desktop β€” After installing, you must fully quit and reopen Claude Desktop

If you don't want to install Node.js, use Claude Code instead β€” it connects directly without Node.js.

Claude Desktop Connector says URL must be HTTPS

The Connectors UI in Claude Desktop (Settings β†’ Connectors) only accepts HTTPS URLs. Since the MCP server runs on http://localhost:19515, you can't use Connectors for local connections.

Use the Auto Install method instead β€” it uses a bridge tool that handles the local connection. If you don't have Node.js, use Claude Code which supports local HTTP connections directly.

Auto Install says success but nothing shows in Claude Desktop

Try these fixes in order:

1. Fully kill Claude Desktop (most common fix on Windows)

On Windows, closing the window doesn't quit Claude Desktop β€” it stays running in the background. Open Task Manager (Ctrl+Shift+Esc), find Claude in the process list, click End Task, then reopen Claude Desktop.

2. Check Node.js is installed

Open Terminal/Command Prompt and run node -v. If not found, download from nodejs.org, install it, then try clicking "Install in Claude Desktop" again.

3. Windows: config file in wrong location

On Windows, Claude Desktop installs as an MSIX package and reads config from a different location than expected. Update to the latest SEO Utils version (v1.45+) which automatically detects the correct path.

If you're on an older version, manually create claude_desktop_config.json at:

instead of %APPDATA%\Claude\. Copy the config from SEO Utils Settings β†’ MCP Server β†’ Manual Config.

SyntaxError: Unexpected token { / Cannot find module 'node:path'

Claude Desktop is using an old version of Node.js. This commonly happens when you use nvm (Node Version Manager) β€” your terminal has the correct version, but Claude Desktop doesn't load nvm's shell config and picks up an older Node.js instead.

Fix: Edit your Claude Desktop config file and set both the full path to npx AND the PATH environment variable:

  1. Run which npx in your terminal to get the path (e.g., /Users/yourname/.nvm/versions/node/v22.18.0/bin/npx)

  2. Open your Claude Desktop config:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

  3. Update the seo-utils entry:

Replace /Users/yourname/.nvm/versions/node/v22.18.0 with your actual nvm path (run which npx to find it). Both the command and PATH must point to the same Node.js version.

  1. Restart Claude Desktop

Queries return no data

Make sure you're in the correct workspace. Use the prompt "List my workspaces" to check which one is active, then switch if needed.

Does the auth token change when I restart SEO Utils?

No. The auth token is generated once and persists across restarts. You only need to set up the connection once β€” it will keep working after restarting SEO Utils or your computer.

Last updated