{
  "markdown": "# mcp-search-console\n\nMulti-account Google Search Console MCP server for operators who need one MCP surface across\nmultiple sites or clients without restarting the server.\n\nRelease posture: beta package, version `0.1.3` from [`pyproject.toml`](pyproject.toml).\n\n## Choose your path\n\n| You are... | Start here | Then |\n|---|---|---|\n| Connecting the server to Claude/Codex/Cursor | [docs/start-here.md](docs/start-here.md) | Quick start below |\n| Auditing account routing or destructive guards | [docs/architecture.md](docs/architecture.md) | [`gsc/server.py`](gsc/server.py) |\n| Reviewing packaging or registry metadata | [`pyproject.toml`](pyproject.toml) | [`server.json`](server.json) |\n\n## Architecture\n\n```mermaid\nflowchart TD\n  U[AI operator] --> C[MCP client]\n  C --> S[FastMCP server]\n  S --> M[Account manager]\n  M --> F[Accounts config]\n  M --> A[OAuth or service-account auth]\n  S --> R[Retry wrapper]\n  R --> G[Google Search Console API]\n  G --> R --> S\n```\n\n## Request flow\n\n```mermaid\nflowchart TD\n  P[Operator asks for analytics or indexing data] --> T[Selected MCP tool]\n  T --> A[Resolve named or default account]\n  A --> B[Build authenticated GSC client]\n  B --> C[Call Search Console endpoint]\n  C --> D{API call succeeds?}\n  D -- yes --> E[Return normalized JSON]\n  D -- retryable --> F[Backoff and retry]\n  F --> D\n  D -- no --> G[Return error payload]\n```\n\n## Quick start\n\n1. Install the package.\n\n```bash\npython -m pip install mcp-search-console-multi\n```\n\n2. Create the accounts config.\n\n```bash\nmkdir -p ~/.config/mcp-search-console\ncp accounts.example.json ~/.config/mcp-search-console/accounts.json\n```\n\n3. Register it in your MCP client.\n\n```json\n{\n  \"mcpServers\": {\n    \"search-console\": {\n      \"command\": \"uvx\",\n      \"args\": [\"mcp-search-console-multi\"],\n      \"env\": {\n        \"GSC_ACCOUNTS_CONFIG\": \"/Users/you/.config/mcp-search-console/accounts.json\"\n      }\n    }\n  }\n}\n```\n\n## Available tools\n\n| Tool group | Tools | Purpose |\n|---|---|---|\n| Account routing | `list_accounts`, `set_default_account`, `reauthenticate` | Inspect accounts, switch defaults, refresh auth |\n| Property inventory | `list_properties`, `get_site_details` | Discover accessible properties and permissions |\n| Search analytics | `get_search_analytics`, `get_performance_overview`, `compare_periods`, `get_advanced_search_analytics`, `get_search_by_page` | Query search-performance data |\n| Inspection and sitemaps | `inspect_url`, `batch_inspect_urls`, `check_indexing_issues`, `list_sitemaps`, `get_sitemap`, `submit_sitemap`, `delete_sitemap` | Inspect indexing and manage sitemap submissions |\n\n`submit_sitemap` and `delete_sitemap` stay behind the destructive flag documented in\n[docs/start-here.md](docs/start-here.md).\n\n## Runtime proof\n\n| Claim | Proof |\n|---|---|\n| Package entry point is stable | `mcp-search-console-multi = \"gsc.server:main\"` in [`pyproject.toml`](pyproject.toml) |\n| Multi-account routing is first-class | `AccountManager()` and `_get_manager()` in [`gsc/server.py`](gsc/server.py) |\n| Search Console calls are retried | `with_retry()` in [`gsc/server.py`](gsc/server.py) and [`gsc/retry.py`](gsc/retry.py) |\n| Auth is file-driven per account | [`accounts.example.json`](accounts.example.json) and [`gsc/accounts.py`](gsc/accounts.py) |\n\n## Repo map\n\n| Path | Purpose |\n|---|---|\n| [`gsc/server.py`](gsc/server.py) | FastMCP tool surface and response normalization |\n| [`gsc/accounts.py`](gsc/accounts.py) | Account config, auth loading, client construction |\n| [`gsc/auth/`](gsc/auth/) | OAuth and service-account auth implementations |\n| [`gsc/retry.py`](gsc/retry.py) | Retry behavior for transient API failures |\n| [`docs/start-here.md`](docs/start-here.md) | Setup, env, validation, common failures |\n| [`docs/architecture.md`](docs/architecture.md) | Component map and runtime lifecycle |\n\n## Validation\n\n| Check | Command |\n|---|---|\n| Import compiles | `python -m compileall gsc` |\n| Package builds | `python -m build` |\n| README/docs links stay local | `rg '\\\\]\\\\(([^)]+\\\\.md)\\\\)' README.md docs/` |\n\n## License\n\nMIT\n\n<!-- mcp-name: io.github.Ayo-Fam/mcp-search-console -->\n",
  "bytes": 4123,
  "sha": "74ce3f559f36d964642460696b2fddd831a0ebaf19e3e8d40215ab80a28672ab",
  "repo_slug": "apexradius/mcp-search-console",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_ayo_fam_mcp_search_console_57e90652/readme"
}