mcp-search-console
Multi-account Google Search Console MCP server. Connect any number of GSC accounts to Claude, Cursor, Codex, or any MCP-compatible AI assistant — and query them by name in the same session.
# Install: uvx mcp-search-console-multi
# Ask your AI:
"Show me the top queries for my-site last month"
"Compare client-acme's performance between Q1 and Q2"
"Check indexing issues on client-beta's 5 product pages"
Why this one?
Most GSC MCP servers support one account per server process. This one lets you configure multiple accounts (your own sites + client sites) and switch between them per tool call — no restart needed.
| Feature | This server | Others |
|---|---|---|
| Multiple accounts | Yes — named, switchable | No — one per process |
| OAuth + service account | Both, mixed per account | Usually one type |
| Auto token refresh | Yes | Sometimes |
| Rate limit retry | Yes — exponential backoff | No |
| Destructive op guard | Yes — env flag required | Sometimes |
| SSE transport (remote) | Yes | Varies |
Quickstart (uvx — no clone needed)
1. Create your accounts config:
mkdir -p ~/.config/mcp-search-console
cp accounts.example.json ~/.config/mcp-search-console/accounts.json
# Edit it — add your accounts
2. Add to your MCP client config:
{
"mcpServers": {
"search-console": {
"command": "uvx",
"args": ["mcp-search-console-multi"],
"env": {
"GSC_ACCOUNTS_CONFIG": "/Users/you/.config/mcp-search-console/accounts.json"
}
}
}
}
3. Restart your AI client. Done.
Accounts config
Copy accounts.example.json and edit it:
{
"default": "my-site",
"accounts": {
"my-site": {
"type": "oauth",
"client_secrets_file": "~/.config/mcp-search-console/client_secrets.json",
"token_file": "~/.config/mcp-search-console/my-site.token"
},
"client-acme": {
"type": "service_account",
"credentials_file": "~/.config/mcp-search-console/acme.json"
}
}
}
Set GSC_ACCOUNTS_CONFIG to its path, or put it at ~/.config/mcp-search-console/accounts.json (default).
OAuth setup
- Google Cloud Console → create project
- Enable the Search Console API
- Credentials → Create → OAuth client ID → Desktop app
- Download as
client_secrets.json - On first use, a browser window opens for you to authorise — token is saved automatically
Service account setup
- Google Cloud Console → Credentials → Create → Service Account
- Keys tab → Add Key → JSON → download
- In GSC, add the service account email as a user on each property
Using multiple accounts
Every tool accepts an optional account parameter. Omit it to use your default.
"Show top queries for my-site" # uses default
"Show top queries for client-acme" # uses named account
"Compare client-beta performance Jan vs Feb" # named account
Or set the default mid-session:
"Switch to client-acme as my default account"
Available tools
Account management
| Tool | What it does |
|---|---|
list_accounts |
Show all configured accounts and which is default |
set_default_account |
Change the default account |
reauthenticate |
Re-run OAuth flow or reload credentials for an account |
Properties
| Tool | What it does |
|---|---|
list_properties |
List all GSC properties |
get_site_details |
Verification + permission details for a property |
Search analytics
| Tool | What it does |
|---|---|
get_search_analytics |
Queries, pages, clicks, impressions, CTR, position |
get_performance_overview |
Site-level totals for a period |
compare_periods |
Side-by-side comparison of two date ranges |
get_advanced_search_analytics |
Analytics with dimension filters (country, device, etc.) |
get_search_by_page |
Queries driving traffic to a specific page |
URL inspection
| Tool | What it does |
|---|---|
inspect_url |
Indexing status, crawl date, mobile usability, rich results |
batch_inspect_urls |
Inspect up to 10 URLs at once |
check_indexing_issues |
Prioritised issue summary across multiple URLs |
Sitemaps
| Tool | What it does |
|---|---|
list_sitemaps |
All submitted sitemaps with status |
get_sitemap |
Details for a specific sitemap |
submit_sitemap |
Submit a new sitemap (requires GSC_ALLOW_DESTRUCTIVE=true) |
delete_sitemap |
Remove a sitemap (requires GSC_ALLOW_DESTRUCTIVE=true) |
Environment variables
| Variable | Default | Description |
|---|---|---|
GSC_ACCOUNTS_CONFIG |
~/.config/mcp-search-console/accounts.json |
Path to your accounts config |
GSC_ALLOW_DESTRUCTIVE |
unset | Set to true to enable sitemap submit/delete |
MCP_TRANSPORT |
stdio |
Set to sse for remote/Docker deployment |
MCP_HOST |
127.0.0.1 |
SSE bind host (use 0.0.0.0 for all interfaces) |
MCP_PORT |
3001 |
SSE bind port |
Remote deployment (Docker / VPS)
docker build -t mcp-search-console .
docker run \
-e MCP_TRANSPORT=sse \
-e MCP_HOST=0.0.0.0 \
-e MCP_PORT=3001 \
-e GSC_ACCOUNTS_CONFIG=/config/accounts.json \
-v /path/to/config:/config \
-p 3001:3001 \
mcp-search-console
Your MCP client connects to http://your-server:3001/sse.
License
MIT
Metadata
Release files for mcp-search-console-multi 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mcp_search_console_multi-0.1.3.tar.gz | 9.5 kB | Without provenance | Details for mcp_search_console_multi-0.1.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mcp_search_console_multi-0.1.3-py3-none-any.whl | Python 3 | none | any | Details for mcp_search_console_multi-0.1.3-py3-none-any.whl |
Total release size: 21.0 kB
Release files / mcp_search_console_multi-0.1.3.tar.gz
| Download URL | mcp_search_console_multi-0.1.3.tar.gz |
|---|---|
| Size | 9.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f853ccb07d2ad1bf884317b6717a0a4249b219e566f1ef9d954dfbcc94c31dfc
|
|
BLAKE2b-256 checksum How to use checksums |
2701ad22367b65d8227d771fcb7bc2342ebba5a7828c63d6679c49d36d46be28
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / mcp_search_console_multi-0.1.3-py3-none-any.whl
| Download URL | mcp_search_console_multi-0.1.3-py3-none-any.whl |
|---|---|
| Size | 11.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0fd5dda48262594ac5d0d8f0ffedb4632b11ba102d723abe70b21268437fe376
|
|
BLAKE2b-256 checksum How to use checksums |
118496aa8188a955233feca1c100e69c244bb675e3f39c805712ed3b1c5e96dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for mcp-search-console-multi 0.1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.