К содержанию
Pingera

Pingera MCP 0.2: весь Pingera для ИИ-агентов

  • Опубликовано:
  • Обновлено
  • 6 мин чтения
Pingera - Блог - Pingera MCP 0.2 - весь Pingera для ИИ-агентов

Чуть больше года назад мы выпустили MCP сервер Pingera, осенью научили его работать по сети для многих пользователей сразу, а зимой добавили фильтрацию инструментов, чтобы не засорять контекст модели. Версия 0.2 — это не очередной шаг, а переписанный сервер: он умеет почти всё, что умеет Pingera, подключается одной строкой и стоит модели заметно меньше токенов.

Коротко

  • Облачный сервер https://mcp.app.pingera.ru/mcp: ничего не нужно устанавливать, достаточно API ключа в заголовке.
  • 121 инструмент вместо 79: аптайм и время ответа по регионам, правила и каналы алертов, мульти-региональные запуски, плановые работы и постмортемы, секреты, приватные локации, отчёты и журнал аудита.
  • Наборы инструментов и режим только для чтения выбираются для каждого клиента заголовками — один сервер, разные агенты.
  • Под капотом — официальный MCP Python SDK 2.x и stateless HTTP: сервер масштабируется как обычный веб-сервис, а ключи пользователей никогда не пересекаются.

Посмотрите, как это работает

Так выглядит разбор падения проверки в Claude с подключённым Pingera. Агент сам выбирает инструменты: находит упавшую проверку, смотрит результаты и время ответа по регионам, а потом по вашей просьбе открывает инцидент на Статус Странице.

Ассистент + Pingera MCP

С утра жалуются, что API тормозит и отваливается. Разберись, что происходит.

list_checks(status="failed")

1 проверка: «API production» (k3x9p2m7q1az) · api · https://api.example.com/health · failed

list_check_results(check_id="k3x9p2m7q1az", failed_only=true, start="24h")

14 падений с 07:42 UTC · все из «EU, West»: HTTP 503 Service Unavailable · «RU, Moscow» без ошибок

get_response_times(check_id="k3x9p2m7q1az", start="24h")

RU, Moscow — avg 182 мс, p95 240 мс · EU, West — avg 4 310 мс, p95 30 000 мс (таймауты)

list_alerts(check_id="k3x9p2m7q1az", status="active")

1 алерт · high · firing с 07:47 UTC · уведомление в Telegram доставлено

Проблема только в Европе: с 07:42 UTC проверка из региона EU, West получает 503 и таймауты, из Москвы всё работает — avg 182 мс. Похоже на сбой балансировщика или CDN в европейской зоне, а не на сам API. Алерт уровня high уже висит 3 часа без подтверждения. Открыть инцидент на Статус Странице и подтвердить алерт?

Да. Инцидент без рассылки подписчикам, пока не поймём причину.

create_incident(page_id="qkk4ibclom2q", name="Ошибки API для пользователей в Европе", status="investigating", impact="minor", components={"00upz46xbbwx": "partial_outage"}, deliver_notifications=false)

{"id": "f81kq0x2m4tz", "status": "investigating", "impact": "minor"}

acknowledge_alert(alert_id="al5d93kq2b")

{"status": "acknowledged"}

Готово: инцидент «Ошибки API для пользователей в Европе» открыт, компонент API помечен как partial outage, подписчики не уведомлены. Алерт подтверждён. Когда причину найдут — напишите, я закрою инцидент и подготовлю черновик постмортема.
Агент разбирается с падением API (демо-данные)

Обратите внимание на start="24h": модели не нужно знать текущую дату, все параметры времени принимают относительные значения вроде 30m, 24h или 7d.

Подключение за минуту

Облачный сервер работает по протоколу streamable HTTP, его понимают Claude Code, Cursor, VS Code и большинство других клиентов. Нужен только API ключ из настроек аккаунта. Ключ передаётся в заголовке каждого запроса и нигде не хранится. Если хотите, чтобы ключ не покидал ваш компьютер, запустите сервер локально — он по-прежнему ставится из PyPI.

Соберите подключение под себя — заодно увидите, во что каждый набор инструментов обходится контекстному окну:

Подключите Pingera к своему ассистенту

Выберите клиент, режим и наборы инструментов — конфигурация соберётся сама.

Что агенту можно делать
Наборы инструментов

0 инструментов в контексте модели

≈ 0 тыс. токенов на их описания в каждом запросе

Какие инструменты получит агент

121 инструмент — и не обязательно все сразу

Мы добавили всё, что за год появилось в API, SDK и pngr: аптайм, p95 и историю статусов проверок, поиск по результатам всех проверок, мульти-региональные запуски, правила и каналы алертов с тестовыми уведомлениями, heartbeat-мониторинг, плановые работы, прошедшие инциденты и постмортемы, секреты, приватные локации, PDF-отчёты и журнал аудита.

Но больше инструментов — больше токенов. Описания всех 121 инструмента занимают около 36 тысяч токенов, и модель «перечитывает» их в каждом запросе. Поэтому инструменты разложены по 15 наборам, а по умолчанию включены только самые нужные: проверки, результаты, алерты и Статус Страницы — 78 инструментов и около 26 тысяч токенов. Агенту дежурного, которому достаточно разбираться с падениями, хватит checks,results,alerts в режиме чтения — это уже около 7 тысяч.

Набор выбирается заголовком X-Pingera-Toolsets, а точный список инструментов — заголовком X-Pingera-Tools. Старый заголовок X-MCP-Tools тоже работает. Для локального сервера то же самое задаётся переменными PINGERA_TOOLSETS и PINGERA_TOOLS.

Только чтение — для агента, а не для всего сервера

Раньше режим только для чтения включался для всего сервера. Теперь его выбирает клиент: заголовок X-Pingera-Mode: read_only прячет все инструменты, которые что-то создают, меняют или удаляют. Даже если модель «вспомнит» про delete_check, сервер откажет. Запуск проверки по требованию, тестовое уведомление и заказ отчёта остаются доступны — они ничего не меняют в настройках.

Кроме того, все инструменты размечены подсказками MCP: только чтение, удаление, повторный вызов безопасен. Клиенты вроде Claude по ним решают, когда спросить у вас подтверждение.

Проверьте сами

Сервер можно потрогать без ИИ — официальным MCP Inspector. А если хотите держать сервер у себя, достаточно Docker.

$ alias mcpi='npx @modelcontextprotocol/inspector --cli https://mcp.app.pingera.ru/mcp --transport http --header "Authorization: Bearer $PINGERA_API_KEY"'
$ mcpi --method tools/list | jq '.tools | length'
78
# Агент дежурного: три набора и только чтение
$ mcpi --header "X-Pingera-Toolsets: checks,results,alerts" --header "X-Pingera-Mode: read_only" --method tools/list | jq '.tools | length'
28
$ mcpi --method tools/call --tool-name check_connection | jq -r '.content[0].text'
{
"connected": true,
"organizations": [
{
"id": "oqkvlw84h5sy",
"name": "Acme",
"timezone": "Europe/Moscow",
"plan": { "name": "Team" }
}
]
}
# В режиме только для чтения инструментов, которые что-то меняют, у клиента просто нет
$ mcpi --header "X-Pingera-Mode: read_only" --method tools/call --tool-name delete_check --tool-arg check_id=k3x9p2m7q1az
{"error":{"code":"tool_not_found","message":"Tool 'delete_check' not found on server."}}
$ git clone https://github.com/pingera/pingera-mcp && cd pingera-mcp
$ docker build -t pingera-mcp-server . && docker run -d -p 8000:8000 -e PINGERA_MODE=read_write pingera-mcp-server
$ curl -s localhost:8000/health
{"status":"ok","version":"0.2.0"}
# Без ключа в запросе сервер ответит 401
$ curl -s -o /dev/null -w "%{http_code}\n" -X POST localhost:8000/mcp
401
MCP Inspector и свой сервер в Docker (демо-данные)

Под капотом

Официальный MCP Python SDK 2.x. Первые версии сервера были построены на FastMCP, а потом обросли собственными слоями поверх. В 0.2 мы переписали сервер на MCPServer из официального SDK: меньше зависимостей, поддержка новой версии протокола 2026-07-28 и совместимость со старыми клиентами, которые подключаются через initialize.

Stateless HTTP. В прошлом году для SSE нужны были долгоживущие сессии, а значит и «липкая» балансировка. Теперь каждый запрос самодостаточен: сервер не хранит сессий, и любой воркер или реплика отвечает на любой запрос. Облачный сервер масштабируется так же, как наш API.

Ключ живёт ровно один запрос. Учётные данные из заголовка кладутся в ContextVar и передаются в SDK только для конкретного вызова API (_request_auth) — на общих объектах их нет. Мы проверяем это тестом: 20 клиентов с разными ключами одновременно обращаются к нарочно медленному API, и каждый запрос должен дойти со своим ключом.

Схемы из SDK. Инструменты создания и изменения генерируются из моделей Python SDK: описания полей, ограничения и допустимые значения попадают в схему автоматически. По дороге пришлось бороться за токены. Например, схема update_status_page весила 21 КБ, из них 11 КБ — список всех часовых поясов мира. Теперь длинные перечисления описываются словами, а редкие поля (цвета, логотипы, аналитика) собраны в один аргумент advanced: схема похудела до 6 КБ.

Чистые ответы. Инструменты возвращают JSON, который отдаёт API, но без пустых полей: у Статус Страницы их несколько десятков, и модели незачем их читать.

Если вы уже пользуетесь MCP сервером

Облачному серверу ничего менять не нужно — клиент сам получит новый список инструментов. Инструменты переименованы по единой схеме (list_pages → list_status_pages, get_check_details → get_check, execute_existing_check → run_check). Если вы запускали сервер сами, вместо TRANSPORT_MODE=sse теперь MCP_TRANSPORT=http. Полная таблица соответствий — в CHANGELOG.

Попробуйте

Читайте также

AI · Новости

Оптимизация контекстного окна: фильтрация инструментов в Pingera MCP Server

Оптимизация контекстного окна LLM в Pingera MCP Server: используем фильтрацию инструментов через флаги и HTTP-заголовки для снижения затрат и ускорения ответов.

  • Опубликовано:
  • Обновлено
  • 2 мин чтения

Новости · Проверки · Статус Страницы

pngr 0.2: алерты, аналитика и Статус Страницы прямо из терминала

Большое обновление Pingera CLI: аналитика проверок, полноценные алерты, управление Статус Страницами и удобный вывод для скриптов. С интерактивным терминалом и конструктором правил алертов.

  • Опубликовано:
  • Обновлено
  • 7 мин чтения

Новости · Статус Страницы

Переворачиваем календарь: истории инцидентов в Статус Страницах

Обновление Статус Страниц Pingera: запуск календарного вида для раздела истории инцидентов (доступен автоматически для всех страниц) и исправление отображения кастомных подписей в почтовых уведомлениях.

  • Опубликовано:
  • Обновлено
  • 1 мин чтения