Перейти к содержимому

PageSpeed Insights MCP: как я подключил проверку скорости сайта к Claude

В сентябре 2026 года я подключил PageSpeed Insights к Claude через MCP-сервер. Проверять скорость сайта вручную — значит открыть отчёт, дождаться замера, продраться сквозь десяток англоязычных метрик и через неделю не вспомнить, что было раньше. Захотелось поручить это ассистенту: пусть сам запускает проверку, сравнивает страницы и объясняет, что тормозит. Ниже весь путь: ключ Google, установка, регистрация в Claude Code, первые результаты на сайте студии и грабли, на которые я наступил.

Окно терминала и знак PageSpeed Insights со спидометром: подключение проверки скорости сайта к ИИ-ассистенту

Что за сервер и зачем он нужен

MCP (Model Context Protocol) — открытый протокол, через который ИИ-ассистент вызывает внешние инструменты; подробнее я писал об этом в статье про подключение Search Console. Здесь важно одно: MCP-сервер — программа-посредник на вашем компьютере. С одной стороны она отвечает ассистенту, с другой — ходит в API Google PageSpeed Insights, тот самый движок Lighthouse, что стоит за отчётом на сайте сервиса. Claude сам просит замер, получает цифры и разбирает их, а мне остаётся задавать вопросы словами.

Заодно сервер умеет то, чего нет в веб-версии: сравнить две страницы, проверить до десяти адресов за раз, запомнить базовый замер и сверить с ним новый.

Какой сервер я выбрал и что проверил до установки

Я взял pagespeed-insights-mcp — npm-пакет на TypeScript, версия 2.1.0. Решили три вещи:

  • Шесть понятных инструментов вместо россыпи. Анализ страницы, диагностика по одному «разрезу», данные реальных пользователей, сравнение, пакетная проверка и сброс кэша. Ничего лишнего.
  • Готовые отчёты под задачу. Вместо сырого ответа Google на 850 КБ — сводка, список правок по важности или разбор блокирующих ресурсов. Модели так проще, а токенов уходит меньше.
  • Короткий читаемый код. Его можно проверить за вечер, а не гадать, что делает чужая программа.

Код я прочитал целиком до установки — это привычка для любого MCP-сервера. Лицензия Apache-2.0. Сеть: только два адреса Google — сервис PageSpeed Insights и Chrome UX Report. Ключ API вычищается из логов и текстов ошибок, повторные попытки идут с нарастающей паузой, параллельных запросов не больше трёх, ответы кэшируются на час. Почему такая проверка — не формальность, я разбирал в статье о безопасности ИИ-инструментов.

Шаг 1. Ключ Google: отдельный и с ограничением

Сервис бесплатный, но без ключа не заработает: общая анонимная квота исчерпана, и первый же запрос вернул ошибку 429 — превышен лимит запросов. Нужен API-ключ из проекта Google Cloud.

  1. В проекте Google Cloud включить PageSpeed Insights API. У меня проект уже был — тот же, что для Google Analytics и Search Console, и этот API в нём уже стоял включённым.
  2. В разделе «Учётные данные» создать API-ключ и дать ему понятное имя.
  3. В ограничениях ключа выбрать «Ограничить ключ» и отметить нужные интерфейсы — а не оставлять «Не ограничивать».

Существующие ключи проекта я расширять не стал: у каждого своя задача, и ключ от индексации не должен уметь ходить в проверку скорости. Отдельный ключ — это ещё и отдельный отзыв: если что-то пойдёт не так, отключаешь один ключ, а не выясняешь, какие сервисы от него зависят. Ограничение по адресу или сайту не ставил — сервер работает на моём компьютере с меняющимся адресом.

Ловушка, которая стоила мне лишнего захода: интерфейс Chrome UX Report API — тот, что отдаёт данные реальных посетителей, — в проекте выключен по умолчанию, даже если PageSpeed уже работает. Пока его не включить и не добавить в ограничения ключа, инструмент реальных данных отвечает 403 с причиной API_KEY_SERVICE_BLOCKED. Проверять это надёжнее прямым запросом к интерфейсу, чем гадать по сообщению сервера.

Шаг 2. Установка

Нужен Node.js версии 20.19 или новее. Проверяем:

node --version

Ставим пакет глобально:

npm install -g pagespeed-insights-mcp

Установка заняла около 20 секунд и 127 пакетов зависимостей. В командной строке появилась программа pagespeed-insights-mcp — это и есть сервер. Запускать её вручную не нужно: стартует её сам Claude.

Шаг 3. Регистрация в Claude Code

Ключ передаётся через переменную окружения. В PowerShell:

$k = "ваш_ключ_Google"
claude mcp add `
  pagespeed-insights -s user `
  -e "GOOGLE_API_KEY=$k" `
  -e NODE_ENV=production `
  -- pagespeed-insights-mcp

Флаг -s user кладёт запись в пользовательский конфиг, а не в файл проекта: папка проекта синхронизируется с облаком, и ключу там делать нечего. NODE_ENV=production переключает логи с цветного текста на компактный JSON — так их проще разбирать, если что-то пойдёт не так. Проверяем:

claude mcp list

Напротив pagespeed-insights появилось «Connected». Дальше знакомая по Search Console история: в уже открытой сессии новых инструментов нет, список подхватывается при запуске. К тому же «Connected» означает лишь, что процесс стартовал и ответил на рукопожатие, — а не то, что ключ рабочий и API включён. Поэтому сначала я проверил ключ обычным запросом к интерфейсу PageSpeed: ответ 200 и полный отчёт по главной странице. Только потом открыл новую сессию.

Шесть инструментов простыми словами

  • Анализ страницы. Полная проверка Lighthouse: оценки скорости, доступности, SEO и соблюдения технических рекомендаций. Можно попросить сводку, полный разбор или список правок по приоритету.
  • Диагностика. Один «разрез» на выбор: блокирующие ресурсы, картинки, скрипты, сторонние подключения, сеть, визуальная загрузка, элементы страницы.
  • Данные реальных пользователей. Метрики из отчёта Chrome UX Report — то, что видят живые посетители, а не лабораторный замер.
  • Сравнение. Две страницы между собой или страница со своим прошлым замером; базовый замер лежит в файле в домашней папке пользователя.
  • Пакетная проверка. До десяти адресов за один вызов и сводка по каждому.
  • Сброс кэша. Сервер держит ответы час; после правки сайта кэш стоит сбросить, иначе получишь старый замер.

Что показал первый прогон на моём сайте

Я проверил главную страницу студии на мобильном профиле. Оценки: скорость — 66–71 из 100 (в разных запусках), доступность — 90, рекомендации — 100, SEO — 100. Самое слабое место по главным метрикам Google (Core Web Vitals): время появления главного блока (LCP) — 5,0–5,3 с при норме до 2,5 с, и сдвиг макета при загрузке (CLS) — около 0,13 при норме до 0,1.

Диагностика по блокирующим ресурсам назвала десять файлов — стили и скрипты шаблона, которые браузер обязан загрузить до показа страницы. Вместе они задерживали показ примерно на 1,9 с. Самые тяжёлые — основной файл стилей темы (около 81 КБ) и скрипт UIkit (около 50 КБ). Плюс неиспользуемый код: примерно 101 КБ стилей и 49 КБ скриптов, а отдельной строкой — лишние переадресации, которые съедают около 0,75 с. Это шаблон конструктора, а не мой код, поэтому решать придётся настройками сборки и кэша, а не правкой файлов.

Пакетная проверка двух страниц показала разброс, который вручную легко не заметить: главная — 69, страница об SEO — 85 (LCP 3,2 с, сдвигов макета нет). Сравнение русской и английской главной: 66 против 71. Данные реальных пользователей отчёт Chrome по домену не отдал: «недостаточно трафика». Для небольшого сайта это нормально, а не поломка: в отчёт попадают только адреса с достаточным числом посещений из Chrome.

Грабли, на которые я наступил

  • 429 без ключа. Анонимная квота Google общая и почти всегда исчерпана, «попробовать без ключа» не получится.
  • 403 на данных реальных пользователей. Ключ, ограниченный одним интерфейсом, не пропустит другой: Chrome UX Report API нужно включить отдельно и добавить в ограничения ключа.
  • Новых инструментов нет в старой сессии. После claude mcp add сессию нужно открыть заново.
  • Оценки плавают. Замер лабораторный, на условном телефоне, и от запуска к запуску разница в несколько баллов — у меня 66 и 71 на одной и той же странице. Один запуск — не доказательство: у инструментов есть параметр «число запусков» (до пяти), и сервер сам выдерживает паузу около минуты между ними, иначе Google вернул бы тот же результат.
  • Кэш на час. Поправили сайт — сбросьте кэш сервера и только потом мерьте. Иначе сравнение с прошлым замером сравнит вас с вами же.
  • Пометка «изменяет данные» у сравнения — про локальный файл. Речь только о файле с базовым замером в вашей домашней папке. Сайт и сервисы Google инструмент не трогает.

Что оказалось полезным, а что нет

  • Работает сразу: разбор причин медлительности, список правок по важности, сравнение страниц одного сайта, пакетная проверка. Ассистент сам выбирает нужный инструмент под вопрос и переводит отчёт с английского.
  • Требует подготовки: данные реальных пользователей — отдельное включение API и достаточный трафик.
  • С оговорками: это измерение, а не лечение. Сервер ничего не меняет на сайте: он показывает, что тормозит, а исправлять всё равно вам или разработчику. Зато вместо получаса в отчёте вы получаете список правок за минуту.
  • Помнить всегда: проверяются только открытые страницы. Личный кабинет и всё, что за паролем, сервис не увидит.

Короткий чек-лист

  1. Убедиться, что стоит Node.js 20.19 или новее.
  2. Включить PageSpeed Insights API (и Chrome UX Report API, если нужны данные реальных пользователей).
  3. Создать отдельный API-ключ и ограничить его нужными интерфейсами.
  4. Поставить пакет pagespeed-insights-mcp через npm.
  5. Зарегистрировать сервер командой claude mcp add в пользовательской области.
  6. Проверить ключ обычным запросом и открыть новую сессию Claude.
  7. Для сравнения «до и после» просить три-пять запусков вместо одного.

Если проходить этот путь самому не хочется, мы можем подключить PageSpeed Insights к ИИ-ассистенту за вас — на вашем компьютере или в вашем облаке.