google-search-console-mcp
Google Search Console MCP
MCP-сервер для Google Search Console API — данные о производительности поиска, статус индексации URL, управление sitemap и список свойств.
Работает тремя способами из одной кодовой базы: stdio (локально, через npx), Streamable HTTP (самостоятельный хостинг) и Cloudflare Workers (размещённый по URL). Реализует MCP 2026-07-28 с автоматическим откатом на 2025-11-25, 2025-06-18 и 2025-03-26, поэтому работает с клиентами по обе стороны изменения протокола.
Ноль зависимостей во время выполнения.
Быстрый старт
npx google-search-console-mcp authЭто проведёт вас через создание Google OAuth-клиента, запустит процесс согласия, проверит учётные данные на живом API и выведет готовый к вставке блок конфигурации для вашего MCP-клиента. Три минуты, в основном ожидание интерфейса Google Cloud.
Затем вставьте выведенный JSON в конфигурацию клиента и перезапустите его.
Related MCP server: searchconsole-mcp
Инструменты
Каждый метод API Search Console v1, плюс два составных.
Инструмент | Что делает | Метод API |
| Все свойства, к которым у вас есть доступ, с уровнями разрешений |
|
| Одно свойство и ваше разрешение на него |
|
| Клики, показы, CTR, позиция — с группировкой, фильтрацией, пагинацией |
|
| Два периода с построчными и общими дельтами | составной |
| Отправленные sitemap или дочерние элементы индекса sitemap |
|
| Статус одного sitemap и количество отправленных/индексированных |
|
| Отправить или повторно отправить sitemap |
|
| Отменить отправку sitemap |
|
| Полный статус индексации для одного URL |
|
| До 25 URL одновременно, со сводкой по состоянию покрытия | составной |
Проверка сайта и sites.add/sites.delete намеренно не предоставляются — добавление и проверка свойств — это браузерный процесс, который не подходит для инструмента агента.
Сервер также предоставляет промпты (performance_review, indexing_audit, query_opportunities, sitemap_health) и ресурсы (gsc://guide/search-analytics, gsc://guide/url-inspection, gsc://guide/sitemaps), которые агенты могут читать по требованию.
Аутентификация
Шаг 1 — создайте Google OAuth-клиент
Это делается только один раз. Сервер не может сделать это за вас: Google требует человека в своей консоли.
Откройте Google Cloud Console и выберите или создайте проект.
Включите Search Console API для этого проекта.
Настройте экран согласия OAuth. Внешний подходит для личного использования. Добавьте свой аккаунт Google в раздел Тестовые пользователи.
Перейдите в Учётные данные → Создать учётные данные → Идентификатор клиента OAuth. Выберите тип приложения Desktop app.
Скопируйте Идентификатор клиента и Секрет клиента.
Тестирование против публикации. Пока экран согласия находится в режиме Тестирование, Google истекает срок действия refresh-токенов через 7 дней, и вам придётся повторно запускать
authеженедельно. Публикация приложения (экран согласия → Опубликовать приложение) делает их долговечными. Для однопользовательского внутреннего инструмента публикация безопасна и не требует проверки Google, если вы остаётесь в рамках областейwebmasters.
Шаг 2 — запустите процесс настройки
npx google-search-console-mcp authЭто открывает небольшую страницу настройки, обслуживаемую с 127.0.0.1. Вставьте идентификатор клиента и секрет, выберите полный или только чтение, и он запустит процесс согласия, обменяет код (с PKCE) на refresh-токен и вызовет list_sites, чтобы доказать, что учётные данные работают — показывая вам точные свойства, к которым они могут получить доступ.
Финальная страница даёт вам блоб учётных данных и готовый к вставке конфиг для Claude Desktop, Claude Code и удалённых развёртываний, каждый с кнопкой копирования. Те же значения выводятся в терминал как запасной вариант.
На машине без головы или через SSH используйте auth --terminal для версии с подсказками.
Вы получаете блоб учётных данных — JSON в base64url-кодировке, содержащий ваш идентификатор клиента, секрет клиента и refresh-токен:
eyJ2IjoxLCJjcmVkZW50aWFscyI6eyJ0eXBlIjoib2F1dGhfcmVmcmVzaF90b2tlbiIsImNsaWVu…Относитесь к блобу как к паролю. Любой, кто им владеет, имеет доступ к вашей Search Console, пока вы не отзовёте его на myaccount.google.com/permissions.
Он существует как единая непрозрачная строка, чтобы одно значение содержало всё, что нужно серверу — оно помещается прямо в переменную окружения или заголовок Authorization без файла учётных данных на диске.
Альтернативы OAuth-процессу
Сервисный аккаунт. Полезен для CI и для свойств, принадлежащих команде. Создайте его в Google Cloud, затем добавьте его client_email как пользователя свойства в Search Console (Настройки → Пользователи и разрешения). Закодируйте загруженный файл ключа напрямую:
base64 -i service-account.json | tr -d '\n'Сервер принимает сырой ключ сервисного аккаунта как блоб — обёртка не нужна.
Существующий токен доступа. Установите {"type":"access_token","access_token":"ya29..."}. Обновление невозможно, поэтому это подходит только для короткоживущих скриптов.
Области
Область | Предоставляет |
| Всё, кроме отправки/удаления sitemap |
| Полный доступ (по умолчанию) |
Выбор режима только для чтения во время auth запрашивает более узкую область. --read-only на сервере — это отдельный блок подстраховки, который отклоняет изменяющие инструменты до обращения к API.
Запуск
Локально (stdio)
Конфиг, выведенный auth:
{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": ["-y", "google-search-console-mcp"],
"env": { "GSC_CREDENTIALS": "<your blob>" }
}
}
}Расположение файлов конфигурации:
Клиент | Путь |
Claude Desktop (macOS) |
|
Claude Desktop (Windows) |
|
Claude Code |
|
Cursor |
|
VS Code |
|
Установите его правильно, если не хотите каждый раз использовать npx:
npm install -g google-search-console-mcpСамостоятельный HTTP
GSC_CREDENTIALS=<blob> npx google-search-console-mcp http --port 8787Обслуживает POST http://127.0.0.1:8787/mcp. По умолчанию привязывается к loopback — передайте --host 0.0.0.0 осознанно, если хотите его открыть, и поставьте TLS перед ним, если сделаете это.
Браузерным клиентам отказывается, если вы их не укажете, потому что сервер, хранящий собственные учётные данные, иначе мог бы управляться любой страницей, которую вы посещаете. Обычные MCP-клиенты не отправляют Origin и не затрагиваются; браузерному нужно указать его происхождение:
npx google-search-console-mcp http --allowed-origins http://localhost:6274 # MCP InspectorОтклонённое происхождение получает 403, который браузер не может прочитать (на отказ нет CORS-заголовков, намеренно), поэтому это проявляется как общая ошибка CORS — проверьте строку Origins: при запуске сервера, если браузерный клиент не может подключиться. --allowed-origins '*' отключает проверку.
Cloudflare Workers
git clone https://github.com/russjeffery/google-search-console-mcp.git
cd google-search-console-mcp
npm install
npx wrangler deployВаш endpoint: https://google-search-console-mcp.<subdomain>.workers.dev/mcp.
По умолчанию Worker не хранит секреты. Каждый клиент отправляет свой собственный блоб учётных данных как bearer-токен, поэтому общее развёртывание никогда не хранит чьи-либо учётные данные Google, и разные пользователи одного URL видят только свои свойства.
Для частного однопользовательского развёртывания вместо этого:
npx wrangler secret put GSC_CREDENTIALS # your blob
npx wrangler secret put MCP_SHARED_SECRET # token clients must presentКлиенты затем отправляют общий секрет, а не блоб.
Необязательные vars в wrangler.jsonc:
Переменная | Эффект |
| Путь для обслуживания. По умолчанию |
|
|
| Разделённые запятыми браузерные происхождения. Не задано = только не-браузерные клиенты; |
|
|
Подключение клиента к удалённому серверу
{
"mcpServers": {
"google-search-console": {
"type": "http",
"url": "https://your-worker.workers.dev/mcp",
"headers": { "Authorization": "Bearer <your blob>" }
}
}
}В веб-интерфейсе или настольном приложении Claude добавьте его в Настройки → Коннекторы → Добавить пользовательский коннектор.
Выведите это заполненным для вашего собственного развёртывания:
npx google-search-console-mcp config --url https://your-worker.workers.dev/mcpCLI
google-search-console-mcp [command] [options]
stdio Run as a stdio MCP server (default)
http Run a local Streamable HTTP MCP server
auth Guided setup in your browser: OAuth flow, blob, client config
config Print client config for existing credentials
doctor Verify credentials by calling the APIdoctor — первое, к чему стоит обратиться, когда что-то не работает — он разделяет «учётные данные неверны» и «клиент не может запустить сервер».
Опции: --credentials <blob>, --site <siteUrl>, --read-only, --port, --host, --endpoint, --secret, --allowed-origins, --url, --terminal, --no-browser.
--allowed-origins принимает список через запятую; не задано означает только не-браузерные клиенты. Записи сопоставляются без учёта регистра, завершающий слэш игнорируется.
--site задаёт свойство по умолчанию, чтобы инструменты могли опускать siteUrl — удобно, когда развёртывание охватывает только один сайт.
Поддержка протокола
Редакция 2026-07-28 существенно изменила Streamable HTTP: нет рукопожатия initialize, нет сессий, нет Mcp-Session-Id, нет GET-потока, а метаданные на запрос в params._meta зеркалируются в HTTP-заголовки. Официальный TypeScript SDK ещё не реализует это, поэтому уровень протокола здесь написан вручную и поддерживает обе эпохи.
Клиент говорит | Поведение сервера |
| Без состояния. Проверяет |
| Стандартное рукопожатие |
Эпоха определяется на каждый запрос: запрос с современным _meta обслуживается как современный, initialize выбирает устаревший. GET и DELETE на endpoint возвращают 405, как предписывает редакция.
Проверка заголовков строгая по умолчанию, согласно спецификации. Если клиент отправляет современный _meta без зеркалирования заголовков, установите MCP_STRICT_HEADERS=0 (или --loose-headers) вместо понижения версии.
Об авторизации: в спецификации OAuth 2.1 предполагается, что сервер является ресурсным сервером с собственным сервером авторизации. Этот сервер вместо этого использует bearer-токен для прямой передачи ваших учётных данных Google — спецификация допускает пользовательские стратегии, а значит, размещённое развёртывание не хранит секретов и не нуждается в базе пользователей. Оборотная сторона — клиентам, ожидающим автоматического обнаружения OAuth, потребуется настроить заголовок вручную, как показано выше.
Работа с данными
Четыре свойства данных Search Console приводят к большинству ошибочных выводов. Описания инструментов и встроенный навык разбирают их подробно; кратко:
Данные задерживаются на ~3 дня. Используйте
lastDays, и инструменты выберут безопасное окно. Диапазон, заканчивающийся сегодня, покажет ложное снижение.Данные по запросам фильтруются в целях конфиденциальности. Группировка по
queryмолча отбрасывает редкие запросы, поэтому клики на уровне запросов никогда не суммируются в общий итог по свойству. Этот разрыв — не потерянный трафик.Позиция инвертирована. Позиция 3 лучше позиции 8; отрицательное изменение — это улучшение.
compare_search_analyticsвозвращает явный флагimproved.Средние значения компенсируют друг друга. Ровные итоговые цифры часто скрывают крупные противоположные изменения. Группируйте по странице или запросу, прежде чем делать вывод, что ничего не изменилось.
Квоты
Аналитика поиска: ~1 200 запросов в минуту на свойство.
Инспекция URL: ~2 000 в день на свойство — сдерживающее ограничение. Дискретизируйте осознанно.
Недоступно через API
Сводный отчёт Index Coverage, живое тестирование URL, запрос индексации, Core Web Vitals, действия вручную, проблемы безопасности, отчёты по ссылкам и удаления не имеют эквивалента в API, поэтому их здесь нет. Постраничный inspect_url — ближайшая замена для вопросов о покрытии.
Навык агента
skills/google-search-console/ — это готовый к установке навык, который обучает агента правильно использовать эти инструменты: рассмотренные выше ловушки, диагностическую лестницу для изменений трафика, эвристику поиска возможностей и справочные таблицы состояний покрытия.
cp -r skills/google-search-console ~/.claude/skills/Тот же справочный материал доступен в Runtime через ресурсы сервера gsc://guide/*, так что агенты без установленного навыка всё равно могут его прочитать.
Разработка
npm install
npm run build # compile to dist/
npm run typecheck
npm test
npm run cf:dev # Worker locally via wranglerБыстрая ручная проверка через HTTP-транспорт:
GSC_CREDENTIALS=<blob> npm run build && node dist/bin/cli.js http &
curl -s http://127.0.0.1:8787/mcp \
-H 'content-type: application/json' \
-H 'MCP-Protocol-Version: 2026-07-28' \
-H 'Mcp-Method: tools/list' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}}}}' | jq '.result.tools[].name'Устранение неполадок
Симптом | Причина и устранение |
| Refresh-токен отозван или экран согласия в режиме Testing (срок действия — 7 дней). Перезапустите |
|
|
| Включите Search Console API в проекте Google Cloud, который выдал учётные данные. |
Пустой | Аутентификация прошла успешно под аккаунтом Google, у которого нет свойств. Вероятно, на экране согласия вы выбрали не тот аккаунт. |
Трафик резко упал в последние дни | Данные ещё не финализированы. Используйте |
Сервер не запускается в Claude Desktop | Выполните |
| Клиент отправляет современный |
Безопасность
Блок учётных данных — это ваш доступ к Google. Не отправляйте его в репозиторий, не вставляйте в общие документы. Отзовите доступ на myaccount.google.com/permissions.
HTTP-режим по умолчанию привязан к
127.0.0.1и проверяетOriginпо значениюALLOWED_ORIGINS, чтобы блокировать DNS rebinding. Если значение не задано, ни один источник из браузера не разрешён — перечислите их явно или используйте*, чтобы отключить проверку./healthи/исключены из проверки; они не открывают функций, требующих учётных данных.Сравнение общего секрета выполняется с проверкой длины и за постоянное время.
Развёртывание в среде Worker по умолчанию вообще не хранит учётные данные.
--read-only/GSC_READ_ONLY=1блокирует изменения карты сайта независимо от предоставленной области OAuth.
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server for Google Search Console, enabling querying search analytics, URL inspection, sitemap management, and more via natural language.2671MIT
- AlicenseAqualityCmaintenanceA lightweight, fast MCP server for Google Search Console. Query search analytics, manage sitemaps, and inspect URLs directly from your AI assistant.7Apache 2.0
- AlicenseAqualityBmaintenanceMCP server for Google Search Console, enabling querying search performance, listing properties, and inspecting URL indexing status from MCP-compatible clients.4221MIT
- AlicenseNot gradedqualityCmaintenanceSelf-hosted MCP server for Google Search Console. Enables natural language queries to list sites, analyze search analytics, inspect URLs, and check sitemaps through AI assistants.MIT
Related MCP Connectors
MCP server for Google search results via SERP API
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
SEO MCP server: crawl your site, find AI-visibility gaps, and ship the fix from your coding agent.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/russjeffery/google-search-console-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server