Когда я разбираю поисковый трафик, вопрос редко ограничивается количеством кликов. Мне нужно понять, какие страницы начали получать показы, по каким запросам их находят и что 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