---
title: "Google Search Console MCP Server"
description: "Connect AI assistants to your GSC data with Model Context Protocol. Compare GSC MCP servers and set up Claude Code or Cursor."
canonical_url: "https://gscdump.com/learn-google-search-console/ai-agents/mcp-server"
last_updated: "2026-07-20"
---

Model Context Protocol (MCP) lets an AI application call tools and read data exposed by a server. With a compatible client, you can query GSC data without pasting a new CSV export into every conversation. gscdump currently registers 12 tools: seven focused analytics tools need existing stored data, while composed reports can fall back to live Search Analytics.

## What is MCP

MCP is an open standard created by Anthropic for connecting AI applications to external systems. An MCP server defines capabilities such as tools, resources, and prompts; the host application decides which of those capabilities it supports and when a model may use them.

The same MCP server can work with several clients, but each client handles setup and authentication differently. Servers also decide whether their tools read data or take actions. gscdump's hosted tools read stored analytics and sitemap data, inspect specific URLs, and run analysis reports. There is no tool for submitting a URL for indexing.

The [MCP specification](https://modelcontextprotocol.io/specification/latest) defines a client-host-server architecture built on JSON-RPC. Client support still varies, so use each client's current documentation when adding a remote server.

## Why MCP for SEO

Without an MCP connection, a new question often means another export:

1. Export CSV from GSC
2. Open in spreadsheet
3. Filter/pivot/analyze
4. Repeat for each question

With the server connected:

1. Ask Claude: "Which pages lost impressions this month?"
2. Claude calls gscdump's MCP tools for the stored data
3. Review the returned rows and Claude's analysis

For recurring SEO work, that gives you:

- **Tool-based data access** during AI conversations
- **Several tool calls** in one conversation
- **Repeatable workflows** that combine several tool calls
- **Historical aggregation** when the server is backed by stored data

## GSC MCP Servers Compared

GSC MCP servers differ in authentication, hosting, tool coverage, and whether they query Google directly or query a stored copy. The comparison below reflects each project's documented setup, not a claim that every project has the same limits.

<table>
<thead>
  <tr>
    <th>
      Server
    </th>
    
    <th>
      Typical setup
    </th>
    
    <th>
      Data source
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <a href="https://github.com/AminForou/mcp-gsc" rel="nofollow">
        AminForou/mcp-gsc
      </a>
    </td>
    
    <td>
      Local server with user OAuth or a service account; a separate hosted offering is also linked by the project
    </td>
    
    <td>
      Live Google APIs
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://github.com/ahonn/mcp-server-gsc" rel="nofollow">
        ahonn/mcp-server-gsc
      </a>
    </td>
    
    <td>
      Local Node.js server with a service account
    </td>
    
    <td>
      Live Search Analytics API, up to 25,000 rows per call
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://github.com/Shin-sibainu/google-search-console-mcp-server" rel="nofollow">
        Shin-sibainu/google-search-console-mcp-server
      </a>
    </td>
    
    <td>
      Local Node.js server with user OAuth credentials
    </td>
    
    <td>
      Live Google APIs
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://github.com/surendranb/google-search-console-mcp" rel="nofollow">
        surendranb/google-search-console-mcp
      </a>
    </td>
    
    <td>
      Local Python server with a service account
    </td>
    
    <td>
      Live Google APIs
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        gscdump
      </strong>
    </td>
    
    <td>
      Hosted HTTP endpoint with Google sign-in and a gscdump API key
    </td>
    
    <td>
      Synced R2 Parquet data, live Search Analytics fallback for composed reports, and live URL inspection
    </td>
  </tr>
</tbody>
</table>

### How gscdump Differs

gscdump's seven focused analytics tools read data that has already been synced. Composed reports use stored data when the requested range is covered, but can fall back to live Search Analytics requests. URL inspection also calls Google at request time. The hosted service provides:

- **Queries across the site's synced date range**, including retained data after it leaves Google's rolling window
- **Server-side aggregation** over stored data
- **URL Inspection API access** for specific absolute URLs
- **A hosted endpoint** with Google OAuth handled by gscdump
- **Multi-site support** in one MCP server

The common data paths differ:

- Live API server: Query Google → return the rows available for that request
- gscdump analytics tools: Sync available GSC rows → store them in R2 Parquet → query the stored date range
- gscdump composed reports: Use covered stored data when available → fall back to the live API when required

## Setup: Claude Desktop

Anthropic directs Claude Desktop users to add remote servers through [**Settings → Connectors**](https://claude.com/docs/connectors/building). Anthropic now lists [fixed API-key request headers as a beta authentication option](https://claude.com/docs/connectors/building/authentication), entered by an organization administrator. Because availability depends on that beta and gscdump requires an `x-api-key` header, treat Desktop support as organization-dependent. Claude Code and Cursor have documented setups below.

## Setup: Cursor

[Cursor's MCP guide](https://cursor.com/docs/mcp) documents request headers for remote servers and supports environment-variable interpolation in the `headers` field. Set `GSCDUMP_API_KEY` in the environment available to Cursor, then add this configuration.

Create `~/.cursor/mcp.json` for a global configuration, or `.cursor/mcp.json` for a project-specific configuration:

```json
{
  "mcpServers": {
    "gscdump": {
      "url": "https://gscdump.com/mcp",
      "headers": {
        "x-api-key": "${env:GSCDUMP_API_KEY}"
      }
    }
  }
}
```

Reload Cursor, then check **Settings → Tools & MCP**. If Cursor was launched from a desktop shortcut, confirm that its process can read `GSCDUMP_API_KEY`; shell-only variables may not be available to desktop applications. Do not paste the key itself into a project configuration committed to version control.

## Setup: Claude Code

[Claude Code supports remote HTTP servers with custom headers](https://code.claude.com/docs/en/mcp). Add the hosted server at user scope so the API key is not written to a project file:

```bash
claude mcp add --transport http --scope user --header "x-api-key: YOUR_KEY" \
  gscdump https://gscdump.com/mcp
```

Run `claude mcp get gscdump` to inspect the saved configuration, then use `/mcp` inside Claude Code to check the connection. Keep API keys out of a shared `.mcp.json` file.

## Connecting Your GSC Account

Before configuring a client:

1. Sign in to gscdump with Google.
2. Connect the GSC properties you want to use.
3. Generate an API key in the gscdump dashboard.
4. Put that key in your client's `x-api-key` header configuration.
5. Ask the client to "List my GSC sites" to verify access.

For the seven focused analytics tools, Pro users should wait until the property reports a synced date range. Free users can run composed reports against live Search Analytics without waiting for a backfill.

gscdump stores and refreshes the Google OAuth tokens used for syncing, live Search Analytics reports, and URL inspection. The MCP connection uses the gscdump API key. Google OAuth happens separately in your gscdump account.

## Example Prompts

### Basic Queries

**"Show my GSC sites"**

```md
Show my GSC sites
```

Lists the connected sites available to the API key, with permission level, sync status, and synced date boundaries.

**"Which pages got the most clicks last month?"**

```md
Which pages got the most clicks last month?
```

Queries synced data and returns the top pages sorted by clicks. The current tool returns at most 1,000 pages per call.

**"Show keyword trends for 'mcp server' over 90 days"**

```md
Show keyword trends for 'mcp server' over 90 days
```

Uses the exact-keyword detail tool to return totals, a daily time series, and ranking pages for that query.

### Analysis Prompts

**"Find pages that lost impressions this month"**

```md
Find pages that lost impressions this month
```

Requires at least two page-data calls for explicit current and comparison date ranges, followed by client-side comparison.

**"Which keywords rank 4-15 with high impressions?"**

```md
Which keywords rank 4-15 with high impressions?
```

Filters the returned keyword pool for average positions 4–15. The basic keyword tool is ordered by clicks and capped at 1,000 rows, so this is not a complete high-impression opportunity scan on a large property. Google's [Performance report documentation](https://support.google.com/webmasters/answer/7576553) defines position as an average over the selected data, not a fixed daily rank.

**"Show my site's device breakdown for last month"**

```md
Show my site's device breakdown for last month
```

Returns mobile, desktop, and tablet performance for the site. The current device tool cannot filter to a single page.

### URL Inspection

**"Check indexing status for https://example.com/new-article"**

```md
Check indexing status for https://example.com/new-article
```

Queries Google's [URL Inspection API](https://developers.google.com/webmaster-tools/v1/urlInspection.index/inspect). The tool requires a fully qualified URL in the selected property. The API reports Google's indexed version of the page; it does not run the live URL test available in Search Console.

**"Run the opportunities report for the last 28 days"**

```md
Run the opportunities report for the last 28 days
```

Runs one of gscdump's composed reports and returns ranked findings and suggested next steps. Other available reports include priority, health, risks, movers, growth, triage, brand, and pre-publish.

## MCP vs RAG

Retrieval-augmented generation (RAG) retrieves material from an index and adds it to a model's context. MCP is a protocol through which a client can call server-defined tools or retrieve server-defined resources. They solve different problems and can be used together.

RAG indexes can be refreshed, and MCP tools are not necessarily live or write-enabled. With gscdump, the seven focused analytics tools read the most recently synced data. The URL inspection tool calls Google at request time, but [Google returns the status of the indexed version](https://developers.google.com/webmaster-tools/v1/urlInspection.index/inspect), not a live fetch. The current MCP registry does not expose tools to trigger a sync or submit an indexing request.

Composed reports are a separate path: they use stored coverage when available and can query Search Analytics live when it is not. A report result includes coverage and truncation metadata that should remain visible in any summary.

## MCP vs Function Calling

Provider-specific function calling requires each application to define and execute its own tools. MCP standardizes how compatible clients discover and call server-provided tools.

**Function calling:**

- Tool definitions are registered inside one application
- Authentication and execution are implemented by that application
- Portability depends on the application's integration layer

**MCP:**

- One server can serve multiple compatible clients
- Tool discovery and calls use a common protocol
- Client support, authentication, and enabled protocol features still vary

You still need to test the transport, authentication method, and result limits in every client you support. A shared protocol does not make client behavior identical.

## Privacy & Data Storage

- **OAuth tokens** are encrypted at rest with AES-256-GCM.
- **Analytics data** is stored as Parquet in Cloudflare R2 and partitioned by site and team catalog.
- **Mutable sitemap and inspection state** is stored in a dedicated per-user Cloudflare D1 database.
- **Access checks** run before site-scoped MCP tools and accept a site public ID or exact GSC property URL.

The hosted MCP endpoint requires a user API key. Treat that key as a secret and revoke or rotate it if it is exposed.

## Limitations

**GSC API restrictions:**

- Fresh data can still change; gscdump treats the previous three days as pending and resyncs them until finalized
- Google exposes only a [rolling 16 months of Search performance data](https://developers.google.com/search/docs/monitor-debug/debugging-search-traffic-drops) for backfill
- Search Analytics [omits anonymized queries and stores only top rows](https://support.google.com/webmasters/answer/17011259)
- URL inspection is limited to URLs in properties the account can access and has a [2,000-query-per-day, per-site quota](https://developers.google.com/webmaster-tools/limits)
- Composed reports can consume Search Analytics quota when their data source falls back to Google's live API

**gscdump syncing:**

- Stored analytics are updated by scheduled syncs, not by each MCP query
- The current initial and daily analytics sync jobs are gated to `pro` accounts; a new free account without previously stored data cannot use the seven stored analytics tools
- The initial Pro backfill targets up to 180 days; the synced range grows as daily jobs retain new data
- Those stored analytics tools can only query dates that have been synced for the selected site
- `get-keywords` and `get-pages` return at most 1,000 rows per tool call; detail tools return at most 250 related pages or keywords
- Focused analytics tools and composed reports currently default to the `web` search type; `gsc-discover-hourly` is the separate Discover-specific tool
- Site-level device and country tools do not currently accept a page or query filter
- Requires Google OAuth for the connected account and a separate gscdump API key for MCP

## Developer Resources

**MCP Specification:**[modelcontextprotocol.io](https://modelcontextprotocol.io/specification/latest)

**Google Search Console API Guide:**[GSC API guide](/learn-google-search-console/api)

**Client Documentation:**

- [Claude Code MCP setup](https://code.claude.com/docs/en/mcp)
- [Claude connector authentication](https://claude.com/docs/connectors/building/authentication)
- [Cursor MCP setup](https://cursor.com/docs/mcp)

## Verify the Hosted Connection

1. [Create a gscdump account and API key](/mcp)
2. Add the hosted endpoint to a client that supports custom HTTP headers
3. Ask the client to list your sites; if you need a focused analytics tool, check that the selected site has a synced date range
4. Try the example prompts, then spot-check the returned dates and totals

Spot-check the dates, rows, and totals behind any recommendation before you act on it.

## Related Articles

- [Claude Code for SEO](/learn-google-search-console/ai-agents/claude-code-seo): Specific prompts and workflows for SEO with Claude Code
- [AI SEO Workflows](/learn-google-search-console/ai-agents/seo-workflows): Automated analysis patterns with MCP
- [GSC API Authentication](/learn-google-search-console/api/authentication): OAuth and credential management for the GSC API
- [GSC API Rate Limits](/learn-google-search-console/api/rate-limits): Understanding API quotas and pagination
