MCP

Search Console MCP server: connect Google Search Console to Claude or Codex

TL;DR

Search Console is the platform where an MCP server's read/write split has a concrete consequence: reading query data needs one OAuth scope, and submitting a sitemap needs a different, broader one. A connection made for reading cannot write, and the failure looks like a permissions bug rather than a missing scope.

What already exists for this platform

Google has not shipped a platform-official Search Console MCP server at the time of writing (September 2026). What exists is community wrappers around the Search Console API, which you run yourself.

  • No official server, so there is no read-only baseline to compare against — the choice is a community server you host or a hosted one.
  • The API itself is generous: Search Analytics gives queries, pages, clicks, impressions, CTR and average position by date, country and device.
  • Writes are narrow: sitemap submission and deletion, and that is essentially it.

What a full MCP server adds

Typical option todayAgent Planners MCP
Search Console toolsVaries by community server9 reads, 2 writes
Sitemap submissionNeeds the broader scope, usually unconfiguredAvailable, approval-gated
Joined to ad spendNoGoogle Ads on the same key
Approval before a writeUsually noneEvery write, with an audit row
Tool counts are derived from the live catalogue rather than typed by hand: this family exposes 9 reads and 2 writes of the 384 tools on the endpoint. A key only sees the writes if it carries `tools:write`.

How to configure it

  1. 1Create a key in API & MCP. `tools:read` for questions; add `tools:write` if the agent should be able to change things. Tools mode needs a paid plan and fails closed.
  2. 2Connect Search Console under Integrations — that OAuth step is why the MCP key never carries platform credentials.
  3. 3Add the server to Claude Code, Claude Desktop or Codex using the snippet below.
  4. 4Have the agent call `describe_permissions` first — it reports the key's mode, scopes, plan entitlement and connected accounts.
  5. 5Call `list_accounts` for the account ids, and scope each call with one. Resolution is exact or it refuses, naming the candidates.
bash
claude mcp add --transport http agentplanners https://www.agentplanners.com/api/mcp \
  --header "Authorization: Bearer ap_live_…"

Claude Desktop and Codex

Claude Desktop takes the same endpoint as JSON:

json
{
  "mcpServers": {
    "agentplanners": {
      "url": "https://www.agentplanners.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ap_live_…"
      }
    }
  }
}
Codex uses the same endpoint from `~/.codex/config.toml`, with the key in an environment variable rather than the file: `[mcp_servers.agentplanners]` / `url = "…/api/mcp"` / `bearer_token_env_var = "AGENTPLANNERS_API_KEY"`.

The scope detail that breaks sitemap writes

Reading Search Console needs `webmasters.readonly`. Submitting or deleting a sitemap needs `webmasters` — a different, broader scope. A connection authorized for reading therefore cannot write, and the API's refusal reads like a generic permission error rather than "you asked for the wrong scope months ago".

The honest handling is to request the union at connect time and translate the refusal into a named reason, rather than letting an agent retry a call that can never succeed with the token it has.

There is a second one worth knowing: an older connection may carry no record of which scopes were granted. Absent is not the same as missing — the only reliable signal is what the API actually answers.

Use cases

  • Organic queries against paid keywords in one session — the cannibalization check that needs Search Console and Google Ads together.
  • Pages that lost the most clicks this month, diffed against the prior period, with the ranking movement explained.
  • Sitemap submission after a content release, proposed by the agent and approved by you.
  • Scheduled monitoring of position drops on the pages that matter, delivered by email.

Frequently asked questions

Is there an official Search Console MCP server?
Not from Google at the time of writing (September 2026). The options are a community server you run yourself, or a hosted MCP server that includes Search Console among other platforms.
Why can't my agent submit a sitemap?
Reading Search Console uses the webmasters.readonly scope; submitting or deleting a sitemap needs the broader webmasters scope. A connection authorized only for reading will be refused, and the error usually looks like a generic permissions problem.
Can I compare organic and paid performance in one MCP session?
Only if the server covers both. Search Console and Google Ads sit on the same key here, which is what makes a cannibalization check a single question rather than two exports and a spreadsheet.
Put a human-approved agent on your ad ops

Start free — 2,500 credits a month, no credit card. Reads are free; every write waits for you.

Related reading