Google Search Console MCP Server & CLI
A free, open source Google Search Console MCP server and CLI that lets Claude Code, Codex, Cursor and other AI agents read your search traffic, check indexing and submit sitemaps.
0.0(0 ratings)- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Add it with a single command in a terminal.
claude mcp add google-search-console \
-- npx -y @thenavidm/google-search-console-mcp-cli@latest - 3
In Claude Code, type /mcp. Google Search Console should show as connected.
/mcp
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Add it with a single command in a terminal.
claude mcp add google-search-console -- npx -y @thenavidm/google-search-console-mcp-cli@latest - 3
In Claude Code, type /mcp. Google Search Console should show as connected.
/mcp
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Add it with a single command in a terminal.
claude mcp add google-search-console \
-- npx -y @thenavidm/google-search-console-mcp-cli@latest - 3
In Claude Code, type /mcp. Google Search Console should show as connected.
/mcp
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2Download the extension
Download the Claude Desktop extension.
- 3
Double-click it, and Claude Desktop installs it.
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2Download the extension
Download the Claude Desktop extension.
- 3
Double-click it, and Claude Desktop installs it.
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2Download the extension
Download the Claude Desktop extension.
- 3
Double-click it, and Claude Desktop installs it.
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Add it with a single command in a terminal.
codex mcp add google-search-console \
-- npx -y @thenavidm/google-search-console-mcp-cli@latest - 3
Check that Codex lists it.
codex mcp list
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Add it with a single command in a terminal.
codex mcp add google-search-console -- npx -y @thenavidm/google-search-console-mcp-cli@latest - 3
Check that Codex lists it.
codex mcp list
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Add it with a single command in a terminal.
codex mcp add google-search-console \
-- npx -y @thenavidm/google-search-console-mcp-cli@latest - 3
Check that Codex lists it.
codex mcp list
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Open Cursor's settings, go to the MCP tab, and click Add new global MCP server.
- 3
Add the server.
{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": ["-y", "@thenavidm/google-search-console-mcp-cli@latest"]
}
}
} - 4
Open the MCP tab again. It should show 19 tools.
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Open Cursor's settings, go to the MCP tab, and click Add new global MCP server.
- 3
Add the server.
{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": ["-y", "@thenavidm/google-search-console-mcp-cli@latest"]
}
}
} - 4
Open the MCP tab again. It should show 19 tools.
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Open Cursor's settings, go to the MCP tab, and click Add new global MCP server.
- 3
Add the server.
{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": ["-y", "@thenavidm/google-search-console-mcp-cli@latest"]
}
}
} - 4
Open the MCP tab again. It should show 19 tools.
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Open the Command Palette and run MCP: Open User Configuration.
- 3
Add the server to that mcp.json.
If the file already has servers, add only this one inside servers.
{
"servers": {
"google-search-console": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@thenavidm/google-search-console-mcp-cli@latest"]
}
}
}
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Open the Command Palette and run MCP: Open User Configuration.
- 3
Add the server to that mcp.json.
If the file already has servers, add only this one inside servers.
{
"servers": {
"google-search-console": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@thenavidm/google-search-console-mcp-cli@latest"]
}
}
}
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Open the Command Palette and run MCP: Open User Configuration.
- 3
Add the server to that mcp.json.
If the file already has servers, add only this one inside servers.
{
"servers": {
"google-search-console": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@thenavidm/google-search-console-mcp-cli@latest"]
}
}
}
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Add it with a single command in a terminal.
copilot mcp add google-search-console \
-- npx -y @thenavidm/google-search-console-mcp-cli@latest - 3
Check that Copilot CLI has it.
copilot mcp get google-search-console
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Add it with a single command in a terminal.
copilot mcp add google-search-console -- npx -y @thenavidm/google-search-console-mcp-cli@latest - 3
Check that Copilot CLI has it.
copilot mcp get google-search-console
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Add it with a single command in a terminal.
copilot mcp add google-search-console \
-- npx -y @thenavidm/google-search-console-mcp-cli@latest - 3
Check that Copilot CLI has it.
copilot mcp get google-search-console
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Open your Gemini CLI settings.
~/.gemini/settings.json - 3
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers.
{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": ["-y", "@thenavidm/google-search-console-mcp-cli@latest"]
}
}
} - 4
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Open your Gemini CLI settings.
%USERPROFILE%\.gemini\settings.json - 3
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers.
{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": ["-y", "@thenavidm/google-search-console-mcp-cli@latest"]
}
}
} - 4
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Open your Gemini CLI settings.
~/.gemini/settings.json - 3
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers.
{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": ["-y", "@thenavidm/google-search-console-mcp-cli@latest"]
}
}
} - 4
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Open your OpenCode config.
~/.config/opencode/opencode.json - 3
Add the server under mcp.
If the file already has servers, add only this one inside mcp.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"google-search-console": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/google-search-console-mcp-cli@latest"],
"enabled": true
}
}
} - 4
Restart OpenCode.
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Open your OpenCode config.
%USERPROFILE%\.config\opencode\opencode.json - 3
Add the server under mcp.
If the file already has servers, add only this one inside mcp.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"google-search-console": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/google-search-console-mcp-cli@latest"],
"enabled": true
}
}
} - 4
Restart OpenCode.
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Open your OpenCode config.
~/.config/opencode/opencode.json - 3
Add the server under mcp.
If the file already has servers, add only this one inside mcp.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"google-search-console": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/google-search-console-mcp-cli@latest"],
"enabled": true
}
}
} - 4
Restart OpenCode.
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Add it with a single command in a terminal.
openclaw mcp add google-search-console \
--command npx \
--arg -y \
--arg @thenavidm/google-search-console-mcp-cli@latest - 3
Check that it starts and lists its tools.
openclaw mcp doctor google-search-console --probe
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Add it with a single command in a terminal.
openclaw mcp add google-search-console --command npx --arg -y --arg @thenavidm/google-search-console-mcp-cli@latest - 3
Check that it starts and lists its tools.
openclaw mcp doctor google-search-console --probe
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Add it with a single command in a terminal.
openclaw mcp add google-search-console \
--command npx \
--arg -y \
--arg @thenavidm/google-search-console-mcp-cli@latest - 3
Check that it starts and lists its tools.
openclaw mcp doctor google-search-console --probe
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
In the agent panel, click the … menu, then MCP Servers, Manage MCP Servers and View raw config.
- 3
Add the server to mcp_config.json.
If the file already has servers, add only this one inside mcpServers.
{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": ["-y", "@thenavidm/google-search-console-mcp-cli@latest"]
}
}
}
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
In the agent panel, click the … menu, then MCP Servers, Manage MCP Servers and View raw config.
- 3
Add the server to mcp_config.json.
If the file already has servers, add only this one inside mcpServers.
{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": ["-y", "@thenavidm/google-search-console-mcp-cli@latest"]
}
}
}
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
In the agent panel, click the … menu, then MCP Servers, Manage MCP Servers and View raw config.
- 3
Add the server to mcp_config.json.
If the file already has servers, add only this one inside mcpServers.
{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": ["-y", "@thenavidm/google-search-console-mcp-cli@latest"]
}
}
}
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Open your Hermes config.
~/.hermes/config.yaml - 3
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it.
mcp_servers:
google-search-console:
command: "npx"
args: ["-y", "@thenavidm/google-search-console-mcp-cli@latest"]
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Open your Hermes config.
%USERPROFILE%\.hermes\config.yaml - 3
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it.
mcp_servers:
google-search-console:
command: "npx"
args: ["-y", "@thenavidm/google-search-console-mcp-cli@latest"]
- 1
Sign in once in a terminal, with your OAuth client's ID and secret.
A browser opens for you to pick your Google account. The token is saved on this computer, so your app's config needs nothing else.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
npx -y @thenavidm/google-search-console-mcp-cli@latest login - 2
Open your Hermes config.
~/.hermes/config.yaml - 3
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it.
mcp_servers:
google-search-console:
command: "npx"
args: ["-y", "@thenavidm/google-search-console-mcp-cli@latest"]
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
mkdir -p ~/.claude/skills/google-search-console
cp "$(npm root -g)/@thenavidm/google-search-console-mcp-cli/SKILL.md" ~/.claude/skills/google-search-console/ - 3
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 5
Ask Claude Code to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.claude\skills\google-search-console" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\google-search-console-mcp-cli\SKILL.md" "$HOME\.claude\skills\google-search-console\" - 3
Sign in once.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
google-search-console-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 5
Ask Claude Code to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
mkdir -p ~/.claude/skills/google-search-console
cp "$(npm root -g)/@thenavidm/google-search-console-mcp-cli/SKILL.md" ~/.claude/skills/google-search-console/ - 3
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 5
Ask Claude Code to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
mkdir -p ~/.agents/skills/google-search-console
cp "$(npm root -g)/@thenavidm/google-search-console-mcp-cli/SKILL.md" ~/.agents/skills/google-search-console/ - 3
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 5
Ask Codex to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.agents\skills\google-search-console" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\google-search-console-mcp-cli\SKILL.md" "$HOME\.agents\skills\google-search-console\" - 3
Sign in once.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
google-search-console-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 5
Ask Codex to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
mkdir -p ~/.agents/skills/google-search-console
cp "$(npm root -g)/@thenavidm/google-search-console-mcp-cli/SKILL.md" ~/.agents/skills/google-search-console/ - 3
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 5
Ask Codex to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
Ask Cursor to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Cursor finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
Ask Cursor to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Cursor finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
Ask Cursor to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Cursor finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
Ask VS Code to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so VS Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
Ask VS Code to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so VS Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
Ask VS Code to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so VS Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
mkdir -p ~/.copilot/skills/google-search-console
cp "$(npm root -g)/@thenavidm/google-search-console-mcp-cli/SKILL.md" ~/.copilot/skills/google-search-console/ - 3
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 5
Ask Copilot CLI to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.copilot\skills\google-search-console" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\google-search-console-mcp-cli\SKILL.md" "$HOME\.copilot\skills\google-search-console\" - 3
Sign in once.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
google-search-console-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 5
Ask Copilot CLI to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
mkdir -p ~/.copilot/skills/google-search-console
cp "$(npm root -g)/@thenavidm/google-search-console-mcp-cli/SKILL.md" ~/.copilot/skills/google-search-console/ - 3
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 5
Ask Copilot CLI to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
Ask Gemini CLI to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Gemini CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
Ask Gemini CLI to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Gemini CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
Ask Gemini CLI to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Gemini CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
mkdir -p ~/.config/opencode/skills/google-search-console
cp "$(npm root -g)/@thenavidm/google-search-console-mcp-cli/SKILL.md" ~/.config/opencode/skills/google-search-console/ - 3
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 5
Ask OpenCode to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.config\opencode\skills\google-search-console" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\google-search-console-mcp-cli\SKILL.md" "$HOME\.config\opencode\skills\google-search-console\" - 3
Sign in once.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
google-search-console-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 5
Ask OpenCode to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
mkdir -p ~/.config/opencode/skills/google-search-console
cp "$(npm root -g)/@thenavidm/google-search-console-mcp-cli/SKILL.md" ~/.config/opencode/skills/google-search-console/ - 3
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 5
Ask OpenCode to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
mkdir -p ~/.openclaw/skills/google-search-console
cp "$(npm root -g)/@thenavidm/google-search-console-mcp-cli/SKILL.md" ~/.openclaw/skills/google-search-console/ - 3
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 5
Ask OpenClaw to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.openclaw\skills\google-search-console" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\google-search-console-mcp-cli\SKILL.md" "$HOME\.openclaw\skills\google-search-console\" - 3
Sign in once.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
google-search-console-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 5
Ask OpenClaw to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
mkdir -p ~/.openclaw/skills/google-search-console
cp "$(npm root -g)/@thenavidm/google-search-console-mcp-cli/SKILL.md" ~/.openclaw/skills/google-search-console/ - 3
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 4
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 5
Ask OpenClaw to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
Ask Antigravity to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Antigravity finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
Ask Antigravity to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Antigravity finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
Ask Antigravity to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Antigravity finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
Ask Hermes to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Hermes finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
Ask Hermes to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Hermes finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
Ask Hermes to use google-search-console-cli.
Running google-search-console-cli on its own lists every command, so Hermes finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
List every command, then try one.
google-search-console-cli
google-search-console-cli list-sites
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
$env:GSC_CLIENT_ID = "your-client-id"
$env:GSC_CLIENT_SECRET = "your-client-secret"
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
List every command, then try one.
google-search-console-cli
google-search-console-cli list-sites
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/google-search-console-mcp-cli@latest - 2
Sign in once.
export GSC_CLIENT_ID=your-client-id
export GSC_CLIENT_SECRET=your-client-secret
google-search-console-cli login - 3
Check your setup.
It names anything that's wrong and the fix.
google-search-console-cli doctor - 4
List every command, then try one.
google-search-console-cli
google-search-console-cli list-sites
Needs Node 22 or newer and a Google OAuth client from your own Cloud project. Set it up in about 5 minutes.
It's free and open source. If it saves you time, star it on GitHub, so more people find it.
This free Google Search Console MCP server and CLI gives your AI real access to Google Search Console: the queries, pages, rankings, indexing and sitemaps Google recorded for your sites. It compares periods, finds pages close to page one, inspects why a URL isn't indexed, and submits sitemaps.
It's one install with two ways in. Claude, Codex, Cursor or any other MCP app calls its 19 tools for you, and the same tools work as a CLI that agents like Claude Code, Codex and OpenCode run, or that you type yourself.
In this guide, I'll show you:
- What the Google Search Console MCP server & CLI is, and what you can ask it
- How to install it and check that it works
- When to use the MCP server, and when the CLI
- Every tool, and how to keep your account safe
Every tool on this page comes from the server itself, and every cost was measured in Claude Code.
Key takeaways
What is the Google Search Console MCP server & CLI?
The Google Search Console MCP server & CLI is a free, open source program that lets AI agents read your search traffic and manage your Search Console properties for you, in two ways. The MCP server is what an AI app like Claude, Codex or Cursor connects to, through MCP (Model Context Protocol), the open standard AI apps use to call outside tools.
You ask in plain language. Your AI picks the right tool, and the server makes the call to Google's Search Console API.
The CLI is the same program as commands. google-search-console-cli top-queries --site sc-domain:example.com runs the same code your AI runs when you ask for your top queries, whether an agent like Claude Code runs it or you do.
In an AI OS, the layer that connects your AI to your context, your data and your tools, a server like this is how your AI reaches Google Search Console. I explain how the parts fit together in how to build an AI operating system, and here's how I use AI myself.
What can you ask it?
Once it's set up, you ask the way you'd ask an assistant. These are real prompts it handles:
Try askingWhich queries lost the most clicks this month compared to last?
Show me pages ranking between 5 and 20. Which are closest to page one?
Why is this URL not showing up in Google?
Is Google still reading my sitemap?
We just launched 30 pages. Check which ones are indexed.
Which of my pages get impressions but almost no clicks?
The first one shows why this is useful. Search Console's own screens make you export two reports and join them in a spreadsheet to answer it, and here it's one call with the changes already worked out.
It works well next to my WordPress MCP server and Cloudflare MCP server, so your AI can update the pages it flags and check your domain's DNS and cache in the same chat. Every server I've made is on my MCP servers page.
For the rest of your SEO, my free title and meta description checker and SERP simulator help too.
How to install the Google Search Console MCP server
Pick your app in the box at the top of this page. Each one is a single command or a pasted block, after you sign in once with your own Google OAuth client.
Windsurf, Zed and Cline take the same server, though they don't have a tab in the box yet. Follow the box's Cursor tab, and put its block here instead:
| App | Where the block goes |
|---|---|
| Windsurf | In the Cascade panel, open the Actions menu (…) and choose Open MCP config file, then paste the block. |
| Cline | Click the MCP Servers icon in the Cline panel, open the Configure tab, click Configure MCP Servers, and paste the block. |
| Zed | Go to Settings, then AI, then MCP Servers, and choose Add Server, then Add Local Server. Enter the block's command, arguments and variables, and Zed saves them under context_servers. |
Watch out: While your OAuth app's publishing status is Testing, Google expires the refresh token after 7 days, and everything stops a week later. Click Publish app on the Audience page while you set it up.
Set up Google Search Console
Google only gives Search Console access through a Google Cloud project, so there is a real setup here. It takes about 5 minutes, once.
GSC_CLIENT_ID and GSC_CLIENT_SECRET in your terminal.npx -y @thenavidm/google-search-console-mcp-cli login.The refresh token is saved to ~/.google-search-console-mcp/tokens.json, and every app on this computer uses it from then on. For a server with no browser, a service account key in GSC_SERVICE_ACCOUNT_KEY works instead. The full walkthrough is in the repo's INSTALL.md.
Check that it works
Run the doctor. It checks which credential is in use, whether a token can be minted, and how many properties that account reaches.
npx -y @thenavidm/google-search-console-mcp-cli doctorZero properties means you signed in with the wrong Google account. A refresh failure a week after setup means the OAuth app is still in Testing.
In Claude Code, /mcp also shows whether the Google Search Console server is connected. It's one of the Claude Code commands worth knowing.
Use the Google Search Console CLI
The CLI is the same 19 tools as commands. AI agents that run commands, like Claude Code, Codex and OpenCode, use it on their own, and you can type the same commands in a terminal or a script.
Every tool name becomes a command with dashes, so striking_distance runs as google-search-console-cli striking-distance.
npm install -g @thenavidm/google-search-console-mcp-cli
google-search-console-cli
google-search-console-cli list-sites
google-search-console-cli top-queries --site sc-domain:example.com --limit 10
google-search-console-cli compare-periods --site sc-domain:example.comThe bare google-search-console-cli lists every command, google-search-console-cli which <words> finds the command for a task, and google-search-console-cli <command> --help shows what a command takes. Deleting a property or a sitemap needs --confirm, the terminal's version of your approval.
google-search-console-cli install <app> adds the server to Claude Code, Codex, Claude Desktop, Cursor, VS Code or Gemini CLI, in each app's own format.
These are the flags you'll use most:
| Flag | What it does |
|---|---|
--json | Prints JSON |
--compact | Prints the JSON on one line |
--select a,b.c | Keeps only those fields, and a dotted path goes deeper |
--agent | Machine mode: compact JSON, no prompts, and it never confirms anything |
--confirm | Lets a write that asks first go ahead |
--dry-run | Shows what a write would do, without doing it |
A script can branch on the exit code:
| Exit code | What it means |
|---|---|
| 0 | It worked |
| 1 | Something unexpected went wrong |
| 2 | The command was typed wrong, or a write needed --confirm |
| 3 | It wasn't found |
| 4 | Google Search Console rejected the credentials |
| 5 | Google Search Console failed or couldn't be reached |
| 7 | You hit a rate limit, so wait and try again |
| 10 | Nothing is set up yet |
MCP server or CLI: which one?
Both are the same program with the same 19 tools. The difference is when your AI pays for them, in the tokens it reads.
- MCP server
- 8,700 tokens
- CLI
- Nothing
- MCP server
- 840 tokens
- CLI
- Nothing
- MCP server
- Nothing more, or in Claude Code the tools it picks
- CLI
- 3,100 tokens, once
- MCP server
- 174,000 tokens
- CLI
- 3,100 tokens
- MCP server
- Yes
- CLI
- No, there's no terminal there
- MCP server
- No
- CLI
- Yes
An app that loads every tool up front sends the full list with every message, whether you mention Google Search Console or not. Claude Code doesn't by default: its tool search sends only the tool names and the server's instructions, and loads a tool's full definition when your AI reaches for it.
The CLI costs nothing until Google Search Console comes up. Then your agent reads its skill file once and runs the commands it needs. With the skill added, Claude Code also lists its one-line description with every message, about 190 tokens.
When the whole conversation is about Google Search Console, the gap closes. Then the MCP server is the better experience, because you ask in plain language and your AI never has to look up a command.
How to spend less
In Claude Code, leave tool search on, which it is unless you've set ENABLE_TOOL_SEARCH=false.
Turn the server off when you aren't using it, with your AI app's own switch. GSC_READ_ONLY=1 also takes the 5 write tools off the list.
Or install the CLI and connect the server later, on the days it earns its place. Every tool stays in reach, and the standing cost drops to nothing.
Every number here was measured on October 5, 2026 in Claude Code 2.1.286 with Claude Opus 5.5. It's the same one-line prompt with and without the server connected, once with tool search off so every tool loads, and once with Claude Code's default. The skill was measured the same way, and other apps and models count tokens a little differently.
What Search Console actually does
A few things cost people an afternoon, and the tools are built around them.
The data runs 2 to 3 days behind
A window that ends today looks empty or partial for its last few days. Every tool with a default window ends 3 days back and says which dates it used.
Queries never add up to the site total
Google holds back rare queries to protect the people who typed them, so a per-query report always shows fewer clicks than the property total. That gap is hidden traffic, not missing traffic.
A property isn't a website
https://example.com/ and sc-domain:example.com are different properties with different data. Passing the wrong one returns "User does not have sufficient permission", so copy the exact string from list_sites.
Lower position is better
Average position is a rank, so moving from 8 to 5 is an improvement. compare_periods signs its position change so that positive always means better.
There's no "request indexing" button in the API
Google offers none. Resubmitting a sitemap is the only recrawl signal an API can send, which is what submit_sitemap is for.
Quotas are per property
Search analytics allows roughly 1,200 queries a minute. URL inspection allows about 2,000 a day and 600 a minute, so inspect_urls paces itself.
Every Google Search Console tool
The tables below list all 19 tools, grouped the way the repo groups them. Of these, 14 only read, and five change something in Search Console.
Search analytics
query_search_analytics- What it does
- The core report: clicks, impressions, CTR and average position from Google Search, grouped by any combination of query, page, country, device, searchAppearance, date or hour.
- Kind
- Reads
top_queries- What it does
- The search queries bringing the most clicks to a property, with impressions, CTR and average position.
- Kind
- Reads
top_pages- What it does
- The pages on a property earning the most clicks from Google Search, with impressions, CTR and average position.
- Kind
- Reads
compare_periods- What it does
- Two equal windows side by side with the deltas already computed: what went up, what fell, per query, page, country or device.
- Kind
- Reads
striking_distance- What it does
- Queries a property already ranks for on the edge of page one, between positions 5 and 20 by default, ordered by the impressions being left on the table.
- Kind
- Reads
URL inspection
inspect_url- What it does
- Ask Google what it actually knows about one URL: whether it is indexed, which sitemap it was found in, the canonical Google picked against the one the page declares, the last crawl, mobile usability, rich results and any AMP version.
- Kind
- Reads
inspect_urls- What it does
- Inspect several URLs on the same property in one call and get a compact table back: indexed or not, the canonical Google chose, and the last crawl.
- Kind
- Reads
Sitemaps
list_sitemaps- What it does
- Every sitemap submitted for a property, with when Google last downloaded each one, how many URLs it holds per content type, and any warnings or errors.
- Kind
- Reads
get_sitemap- What it does
- Details for one submitted sitemap: last download, last submitted, URL counts per type, and whether it is pending or errored.
- Kind
- Reads
submit_sitemap- What it does
- Submit or resubmit a sitemap.
- Kind
- Writes
delete_sitemap- What it does
- Stop tracking a sitemap on a property.
- Kind
- Asks first
Properties and accounts
list_accounts- What it does
- List the Google accounts this server can act as, and which one is used when a tool call does not name one.
- Kind
- Reads
list_sites- What it does
- Every Search Console property this Google account can reach, with the permission level on each: siteOwner, siteFullUser, siteRestrictedUser or siteUnverifiedUser.
- Kind
- Reads
get_site- What it does
- One property and the permission level this account holds on it.
- Kind
- Reads
add_site- What it does
- Register a property in Search Console.
- Kind
- Writes
delete_site- What it does
- Remove a property from this Google account's Search Console.
- Kind
- Asks first
Verification
get_verification_token- What it does
- Mint the token that proves ownership of a site or domain, so a new property can be verified without opening the Search Console UI.
- Kind
- Reads
verify_site- What it does
- Claim ownership once the token from get_verification_token is live.
- Kind
- Writes
list_verified_sites- What it does
- Every site and domain this Google account has verified ownership of, across all Google products.
- Kind
- Reads
Is the Google Search Console MCP server safe?
Writes work from the start, because submitting a sitemap is the point of the tool. Adding a property and submitting a sitemap are easy to undo, so they don't ask.
delete_site and delete_sitemap can't be undone, so both ask first, marked "Asks first" in the tool tables above.
When your AI calls one of them, the call needs a yes first. Where you use it decides who gives it:
- Claude Code (2.1.246 and later) asks you before every call, in every one of its permission modes.
- An app that can show forms asks you in a form.
- Any other app takes your AI's
confirm: trueas the yes, so tell your AI to check with you first. - An agent with no person to ask needs
GSC_CONFIRM=model, so itsconfirm: truecounts in every app. - In a terminal, you add
--confirmto the command.
If the answer is no, nothing reaches Google Search Console.
Make it read-only
Set GSC_READ_ONLY=1 and every write disappears from the tool list, leaving 14 reading tools. GSC_ALLOW_DESTRUCTIVE=0 keeps the sitemap and property writes and drops the two deletes.
Keep a log of every write
Set GSC_AUDIT_LOG to a file path. The server writes one line per attempted write, allowed or blocked, with what it was about to do and who approved it.
Watch out: A search query is whatever a stranger typed into Google, and a page read through URL inspection says whatever that page says. The server marks that text as data, but for an agent working on its own, GSC_READ_ONLY=1 is the real defense.
Your data
There's no server of ours in between. Requests go straight from your computer to Google, and Search Console data is read on demand and never saved to disk.
The refresh token lives in ~/.google-search-console-mcp/tokens.json, readable only by you. logout deletes it, and myaccount.google.com/permissions revokes Google's side, which is the half that matters.
Google Search Console MCP server settings
Every setting is an environment variable in your app's config or your shell. After login, none of them are required.
GSC_CLIENT_ID- Default
- none
- What it does
- Holds your OAuth client's ID, used by login
GSC_CLIENT_SECRET- Default
- none
- What it does
- Holds your OAuth client's secret, used by login
GSC_SERVICE_ACCOUNT_KEY- Default
- none
- What it does
- Points at a service account key, for a server with no browser
GSC_ACCESS_TOKEN- Default
- none
- What it does
- Uses a token made elsewhere, which is never refreshed
GSC_TOKEN_STORE- Default
~/.google-search-console-mcp/tokens.json- What it does
- Moves the token file
GSC_READ_ONLY- Default
- off
- What it does
1hides every write
GSC_ALLOW_DESTRUCTIVE- Default
- on
- What it does
0drops the two deletes and keeps the other writes
GSC_AUDIT_LOG- Default
- off
- What it does
- Logs every attempted write to a file
GSC_SERVICE_ACCOUNT_KEY_JSON- Default
- none
- What it does
- The same key inline, raw or base64
GSC_SCOPES- Default
- webmasters and siteverification
- What it does
- The scopes login asks for
GSC_SURFACE- Default
full- What it does
searchlists three tools that find, describe and run the rest
GSC_TOOL_TIMEOUT_MS- Default
- none
- What it does
- Gives up on any tool after this many milliseconds
GSC_CONFIRM- Default
human- What it does
modellets your AI'sconfirm: trueapprove on its own, for an agent with no person to ask
GSC_HTTP_PORT- Default
8000- What it does
- Sets the port for
--http
GSC_HTTP_HOST- Default
127.0.0.1- What it does
- Sets the address for
--http, and any other needs a token
GSC_HTTP_TOKEN- Default
- none
- What it does
- Sets the bearer token every
--httprequest needs
GSC_HTTP_ALLOWED_ORIGINS- Default
- none
- What it does
- Lists other websites allowed to call
--http, comma separated
GSC_DEBUG- Default
- off
- What it does
1prints debug lines
Troubleshooting
Run the doctor first. It names the step that failed and the fix.
| What you see | What to do |
|---|---|
| Everything stopped a week after setup | The OAuth app is still in Testing. Publish it and run login again |
| "User does not have sufficient permission" | It's the wrong property string. Copy one from list_sites |
| The doctor says 0 properties | You signed in with a Google account that owns none |
| "Search Console API has not been used in project" | Turn the API on in your Google Cloud project |
| The last few days are empty | The data runs 2 to 3 days behind |
| Fewer clicks per query than the site total | That's expected, because Google holds back rare queries |
If the server doesn't show up in your app at all, run the command your app runs, in a terminal, and read the error.
More free tools for your site
Write the llms.txt file AI crawlers read, add schema markup, or tag the links you share.
Free tools
FAQs about the Google Search Console MCP server & CLI
Here are the questions people ask most about the Google Search Console MCP server and CLI.
The Google Search Console MCP server & CLI is a free, open source program that lets an AI app like Claude, Codex or Cursor read your search traffic and manage your Search Console properties.
It has 19 tools for search analytics, URL inspection, sitemaps and property verification, and the same tools run as a CLI that agents like Claude Code and Codex use, or that you type yourself.
An MCP server is a standard way to give an AI app real access to a tool, so it can act instead of guessing.
MCP stands for Model Context Protocol, and Claude, Codex, Cursor and many other AI apps speak it.
Every server I've made is on my MCP servers page.
The Google Search Console CLI is the same program as the Google Search Console MCP server, run as commands.
AI agents like Claude Code, Codex and OpenCode run them for you, and you can type them in a terminal or a script.
One npm package installs both.
Use the Google Search Console MCP server in an AI app with no terminal, like Claude Desktop's chat, and the CLI in a terminal, a script or a cron job.
In an AI app that can run commands, like Claude Code, Codex or Cursor, the CLI is the lighter choice, because it costs nothing until it runs.
Yes, the Google Search Console MCP server is free and open source under the MIT license, and Google's API costs nothing at the volume a person uses.
The only thing you pay for is your own AI app.
Google only gives Search Console access through an OAuth client in a Google Cloud project.
It takes about 5 minutes once, and the client is yours, so no third party ever holds your access.
Your OAuth app is still in Testing, and Google expires Testing refresh tokens after 7 days.
Publish the app on its Audience page and run login again.
No, because Google offers no API for it.
Resubmitting a sitemap with submit_sitemap is the only recrawl signal an API can send.
Yes, run login once for each account.
Every tool takes an optional account, and list_accounts shows which ones are signed in.
The Google Search Console MCP server works with any app that speaks MCP.
That includes Claude Code, Claude Desktop, Codex, Cursor, VS Code, Windsurf, Zed, Cline, GitHub Copilot CLI, Gemini CLI, OpenCode, OpenClaw, Antigravity and Hermes.
I did.
I'm Navid Moazzez, and I made the Google Search Console MCP server & CLI as one of my free tools on navid.me.
You can read more about me.
The code is on GitHub under the MIT license, and the package is on npm.
More MCP servers & CLIs
Related free tools
Navid.me is reader-supported. When you buy through links on this site, I may earn an affiliate commission. Read the affiliate disclaimer.
On this page
The most actionable AI newsletter for founders
Every week, get proven AI strategies, curated tools, and step-by-step systems to grow your audience, create better content, and build a profitable creator business.
No fluff, no filler, no BS. Just five minutes each week that might level up your online business and life.
P.S. Sign up now to get free access to my ultimate AI tools guide for creators.
