How to Set Up Claude Desktop with Google Search Console MCP
Claude Desktop's ability to support access to API services using Model Context Protocol (MCP) is impressive stuff. And yes, that means you can get Claude connected to the Search Console API and query it to answer your questions. Better…
Claude Desktop's ability to support access to API services using Model Context Protocol (MCP) is impressive stuff. And yes, that means you can get Claude connected to the Search Console API and query it to answer your questions. Better still, with Better Search Console , your data syncs to a local SQLite database - so you're not limited to the API's 1,000-row cap and you can run proper SQL queries (or Claude can run SQL queries - you just describe what you want) against your own data. This MCP is something I'm particularly delighted with and I hope you'll agree too.
Psst! This project was inspired by SEOgets , which is an excellent GSC analytics platform. If you want a polished, hosted UI with content grouping and topic clustering, check them out - they're worth the $49/month for teams that need a production dashboard.
https://github.com/houtini-ai/better-search-console
In this guide, I'll walk you through how you setup Claude Desktop with Google Search Console integration, allowing Claude to access your website's search performance data and provide SEO insights from simple prompts.
The outcome, you can ask cool questions like:
"Show me the top 10 queries for houtini.com that rank in the top 20 positions and have more than 50 impressions. Sort by impressions, highest first." Or even run SQL directly against your synced data:
Run this query against houtini.com: SELECT query, SUM(clicks) as clicks, SUM(impressions) as impressions FROM search_analytics WHERE position < 20 AND impressions > 50 GROUP BY query ORDER BY impressions DESC LIMIT 10 And
Show me new search rankings for houtini.com Which will generate you a table like this in Claude Desktop:
What is MCP and Why Should You Care?
Model Context Protocol ( MCP ) is a framework that allows AI models like Claude to interact with external tools and data sources. By connecting Claude to Google Search Console, you can ask questions about your site's search performance.
Prerequisites
Before we begin, make sure you have:
- The latest version of Claude Desktop installed
- A Google Search Console account with at least one verified property
- Access to Google Cloud Platform
- Windows (though the process is similar for Mac/Linux)
Step 1: Install Node.js on Windows
To get this working, we're going to need to install the MCP package with NPM (Node Package Manager), which means installing Node . If you haven't installed it already:
- Visit nodejs.org
- Download the LTS (Long Term Support) version
- Run the installer and follow the prompts
- Accept the default options if you're unsure
Once installed, verify by opening Command Prompt and typing:
node --version
You should see the version number displayed.
Node.js automatically includes npm (Node Package Manager), which we'll use to install the Search Console integration. Verify npm is installed by typing:
npm --version
Step 2: Enable the Search Console API in Google Cloud
- Go to Google Cloud Console
- Create a new project or select an existing one
- In the navigation menu, go to "APIs & Services" > "Library"
- Search for "Search Console API" and select it
- Click "Enable" to activate the API for your project
Step 3: Create a Service Account
- In Google Cloud Console, navigate to "IAM & Admin" > "Service Accounts"
- Click "Create Service Account"
- Enter a name and description for your service account
- Click "Create and Continue"
- You can skip assigning roles for now (we'll grant access directly in Search Console)
- Click "Done"
Note the "Service accounts" navigation link in the left-hand nav.
Step 4: Generate Service Account Credentials
- From the Service Accounts list, find your newly created account
- Click the three dots (⋮) menu and select "Manage keys"
- Click "Add Key" > "Create new key"
- Select "JSON" as the key type
- Click "Create" to download the JSON file
- Store this file very securely – it contains sensitive credentials
Step 5: Grant Access in Google Search Console
- Open Google Search Console
- Select the property you want Claude to access
- Click on "Settings" (gear icon) > "Users and permissions"
- Click "Add User"
- Enter the service account email address (it looks like
name@project-id.iam.gserviceaccount.com) - Set permission level to "Owner" or "Full User" (depending on what access you want Claude to have)
- Click "Add"
Step 6: Configure Claude Desktop
Better Search Console runs via npx, so there's no separate install step. You configure it directly in Claude Desktop:
- Open Claude Desktop
- Go File > Settings
- Select the Developer tab in the pop-up dialogue
- Click "Edit Config"
- Open the claude_desktop_config.json file with your text editor of choice
- Important: Use forward slashes in the path, even on Windows!
- Save the changes
- Restart Claude Desktop completely
Here's the JSON for Better Search Console - note you'll need the full file path to the JSON access key for the Search Console API:
{
"mcpServers": {
"better-search-console": {
"command": "npx",
"args": ["-y", "@houtini/better-search-console"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "C:/path/to/your/credentials.json"
}
}
}
}
That's it! Don't forget to restart Claude Desktop. It seems to take a tiny bit longer to start when it's loading an MCP config.
Step 7: Test your Integration
The first thing to do is run the setup. Ask Claude:
Run the Better Search Console setup to sync my properties.
This fetches up to 3 months of data from the Search Console API and stores it in a local SQLite database. It takes a few minutes depending on how many properties you have, but you only need to do it once. After that, syncs are incremental.
Once that's finished, verify everything worked:
Show me all my Search Console properties.
Claude should return a list of your properties with sync status and row counts. If you see your sites listed with data, you're good to go.
What Makes Better Search Console Different
The original mcp-server-gsc package was a straightforward API wrapper. You'd pass raw JSON parameters and get raw results back. It worked, but you were limited to 1,000 rows per query and couldn't do much analysis without copying data elsewhere.
Better Search Console takes a different approach. It syncs your Search Console data into a local SQLite database per property, which means you can:
- Query all your data - no 1,000-row API limit
- Run SQL directly -
SELECT query, clicks FROM search_analytics WHERE position BETWEEN 5 AND 20 ORDER BY impressions DESC - Use 16 pre-built insights - opportunities, growing/declining queries, new/lost keywords, branded splits, and more
- Get interactive dashboards - visual overviews with sparklines, hero metrics, and trend charts
- Compare periods - last 28 days vs previous 28 days, year-over-year, whatever you need
The data persists locally. Close Claude, reopen it, and your data's still there. No re-fetching.
Oh and, we use MCPapps so you get an interactive visiualisation in Claude Desktop:
Useful Prompts for Better Search Console
If you can describe what you want, you can write a prompt, so I'm not sure I need to go particularly far with this section.
The big difference from the basic, and undermaintained version of GSC MCP is that you don't need to pass raw JSON parameters anymore. Just ask for what you want in plain English.
1. Quick Health Check Across All Properties
Show me the overview of all my Search Console properties for the last 28 days, sorted by clicks.
This returns an interactive grid showing clicks, impressions, CTR, average position, and percentage changes for every synced property. Useful for a Monday morning check across all your sites.
2. Find Ranking Opportunities
Show me ranking opportunities for my site - queries ranking between position 5 and 20 with high impressions.
These are keywords where you're visible but not yet getting clicks. A small ranking improvement could mean a big traffic increase.
3. Compare Performance Across Periods
Compare performance for houtini.com: last 28 days versus the previous 28 days. Break it down by query.
Shows you what's growing, what's declining, and the percentage change for each query. Much more useful than eyeballing the GSC interface.
4. Custom SQL Queries
Run this SQL against houtini.com:
SELECT page, SUM(clicks) as total_clicks, SUM(impressions) as total_impressions,
ROUND(AVG(position), 1) as avg_position
FROM search_analytics
WHERE date >= date('now', '-28 days')
GROUP BY page
ORDER BY total_clicks DESC
LIMIT 15
This is where it gets properly powerful. Any question you can express as SQL, you can ask. Find cannibalising pages, spot device-specific issues, or slice data any way you want.
5. Full Property Dashboard
Show me the full dashboard for houtini.com with the last 3 months of data.
Returns hero metrics, trend charts, top queries, top pages, country breakdown, ranking distribution, and new/lost queries - all in one view.
And that's about it! In my opinion, this is a very small step towards something much bigger. I've been working heavily with automation for stuff like this, reporting, and site monitoring. Working with API services via MCP or on platforms like N8N is the future of where we're headed. But, don't think of it as particularly special - think of this stuff as a prerequisite, much like Excel. That's my opinion at least.
Enjoy!
Continue reading.
Claude Code API Key Security: A Guide to Token Hygiene
The simplest possible setup that keeps your production tokens out of AI chat windows. 1Password CLI, op run, and the conversational discipline that makes the rest of it work.
Agentic Interoperability for Website Owners: AI User Experience (AI UX)
I've been keeping a close eye on the emerging subject of "agentic interoperability" across all my recent build projects. In layman's terms, that's the ability for AI agents to do things for you on your behalf - particularly inside SaaS…
Implementing WebMCP on a Recruitment Website
Thinking about what, exactly, the future of a website "looks" like in the agentic era is a challenging proposition. It might be that in most cases, our future viewers/readers/customers can do everything, from their chatbot of preference…