Google Search Console MCP: поисковая аналитика для AI-агента

Зачем я написал GSC MCP на Go: четыре инструмента для поисковой аналитики, индексации и sitemap, запуск в Docker и границы интерпретации данных.

12.09.2026 · 3 мин чтения

Когда я разбираю поисковый трафик, вопрос редко ограничивается количеством кликов. Мне нужно понять, какие страницы начали получать показы, по каким запросам их находят и что Google знает об индексации конкретного URL. Для разговора с AI приходится переносить эти данные из Search Console вручную. Я написал Google Search Console MCP, чтобы агент мог запрашивать нужный срез сам.

Это самостоятельный open-source сервер на Go. Он обращается к API Google Search Console и отдаёт результат MCP-клиенту через Streamable HTTP. Сервер получает факты, а интерпретация остаётся задачей агента. Проект не является официальным продуктом Google.

Четыре инструмента вместо доступа ко всему кабинету

list_sites возвращает доступные ресурсы и права. query_analytics получает клики, показы, CTR и среднюю позицию с датами, измерениями и фильтрами. inspect_url показывает сведения Google об индексации URL, включая canonical и результат обхода. list_sitemaps возвращает карты сайта, ошибки и предупреждения. Все четыре инструмента работают только на чтение.

Такой набор позволяет сначала проверить доступный ресурс, затем найти интересующую страницу и отдельно изучить её индексацию. При этом проверка URL возвращает сохранённые сведения Google, а не выполняет новый обход страницы в момент вопроса.

Сначала проверить протокол без ключей

git clone https://github.com/tenqz/google-search-console-mcp.git
cd google-search-console-mcp
docker compose -f compose.demo.yml up -d --build
docker compose -f compose.demo.yml exec mcp /mcp-server --smoke http://127.0.0.1:8080/mcp

Демо использует явно обозначенные синтетические данные и не отправляет запросы Google. Адрес MCP — http://localhost:8080/mcp, заголовок — Authorization: Bearer demo-token. Этот токен предназначен только для локального демо. Smoke-проверка вызывает все четыре инструмента, поэтому она проверяет больше, чем доступность HTTP-процесса.

Подключить свой ресурс Search Console

Для реальных данных нужно включить Search Console API, создать service account и добавить его email в пользователи нужного ресурса Search Console. JSON-ключ хранится в credentials/service-account.json с правами 600. Затем нужно скопировать .env.example в .env и задать отдельный случайный MCP_AUTH_TOKEN. Подробные шаги есть в инструкции проекта.

Перед запуском рабочей конфигурации останови демо командой docker compose -f compose.demo.yml down, чтобы освободить порт. В Linux контейнер получает UID и GID оператора и может прочитать закрытый файл ключа без расширения его прав:

export LOCAL_UID=$(id -u) LOCAL_GID=$(id -g)
docker compose up -d --build
docker compose exec mcp /mcp-server --smoke http://127.0.0.1:8080/mcp

MCP-клиент подключается к тому же пути /mcp, но использует уже твой bearer-токен. Для подключения с другого компьютера нужен HTTPS. Ключ Google остаётся на стороне сервера: клиенту нужен токен доступа к MCP, а не содержимое service-account JSON.

Какой вопрос теперь можно задать агенту

Например: «Найди страницы с показами и малым числом кликов за два завершённых семидневных периода. Покажи запросы и среднюю позицию для каждой страницы, укажи диапазоны дат. Если данных недостаточно, не рассчитывай изменение». Для API это несколько ограниченных запросов, а не выгрузка всего кабинета в один промпт.

В query_analytics ресурс задаётся как siteUrl: для доменного ресурса это, например, sc-domain:example.com. Измерения page и query позволяют связать страницу с запросом. Для анализа по дням нужно также явно выбрать date. Размер ответа и пагинацию следует подбирать под задачу.

Где заканчивается достоверность отчёта

Даты аналитики используют тихоокеанское время. Финальные данные могут запаздывать, а Google возвращает верхние строки и может скрывать анонимизированные запросы. Завершённая пагинация не гарантирует полного экспорта. Пустой ответ не означает нулевой спрос, а средняя позиция не является неизменным местом страницы в выдаче.

Поэтому я сохраняю эффективные даты и метаданные свежести вместе с результатом. Рост кликов после правки статьи — наблюдение, но ещё не доказательство эффекта правки. Для истории изменений нужен отдельный слой: сам MCP-сервер не ведёт базу снимков и не запускает регулярный сбор.

Один источник в общей системе

Я использую этот сервер рядом с MCP для Яндекс Вебмастера и краулером ahref. Google показывает поисковую видимость, Яндекс — собственные отчёты, ahref — наблюдаемую структуру ссылок. Их можно сопоставлять, сохраняя происхождение каждого числа.

Исходный код Google Search Console MCP · Как устроен Model Context Protocol

Олег Пацай

Инженерный лидер — AI, архитектура и сложные системы

Проектирую и развиваю сложные программные системы: от архитектуры и инженерных практик до интеграции AI в разработку.

GitHub LinkedIn Telegram Связаться

Давайте делать сложное понятным.

Архитектура, инженерное лидерство и AI в разработке — когда система слишком важна, чтобы её упрощать, и слишком дорогая, чтобы ею не владеть.

LinkedIn Telegram Email