Подключение MCP
Подключите PingZen к вашему AI-инструменту через Model Context Protocol (MCP). Управляйте мониторами, оповещениями и инцидентами прямо из AI-чата.
Как это работает
Ноль API-ключей. Ноль копипаста.
Добавьте URL в ваш AI-клиент → браузер откроется → войдите в аккаунт → готово. OAuth 2.0 всё сделает автоматически.
- Добавьте конфиг ниже в ваш AI-клиент
- AI-клиент откроет браузер для авторизации
- Войдите в PingZen (Google, Яндекс, Telegram или Email)
- Нажмите «Разрешить» — и MCP подключен!
Настройка по клиентам
Claude Code
claude mcp add-json pingzen '{"type":"http","url":"https://pingzen.dev/mcp/"}'Введите /mcp в Claude Code для проверки.
Cursor
.cursor/mcp.json
{
"mcpServers": {
"pingzen": {
"url": "https://pingzen.dev/mcp/"
}
}
}Если Cursor показывает не все инструменты (лимит ~40), используйте URL с тегами: https://pingzen.dev/mcp/?include_tags=monitors,incidents
VS Code
.vscode/mcp.json
{
"servers": {
"pingzen": {
"type": "http",
"url": "https://pingzen.dev/mcp/"
}
}
}Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"pingzen": {
"command": "npx",
"args": [
"mcp-remote",
"https://pingzen.dev/mcp/"
]
}
}
}Путь к файлу: macOS: ~/Library/Application Support/Claude/claude_desktop_config.json | Windows: %APPDATA%\Claude\claude_desktop_config.json
Claude Desktop поддерживает только STDIO — mcp-remote работает как мост к HTTP-серверу. Требуется Node.js.
Windsurf
mcp_config.json
{
"mcpServers": {
"pingzen": {
"serverUrl": "https://pingzen.dev/mcp/"
}
}
}Cline (через API-ключ)
Cline пока не поддерживает MCP OAuth. Для подключения нужен API-ключ — создайте его в панели.
cline_mcp_settings.json
{
"mcpServers": {
"pingzen": {
"type": "streamableHttp",
"url": "https://pingzen.dev/mcp/",
"headers": {
"Authorization": "Bearer pz_YOUR_API_KEY"
}
}
}
}Замените pz_YOUR_API_KEY на ваш реальный ключ. Обязательно укажите "type": "streamableHttp" — без этого Cline будет использовать SSE.
Вывод с учётом часового пояса v0.16.0+
Ответы инструментов рендерят даты в часовом поясе вашего аккаунта (задаётся в веб-приложении: боковая панель → Часовой пояс). Например, list_incidents показывает Started: 2026-05-12 14:32:05 MSK (+03:00) вместо сырой UTC ISO-строки. В каждой метке есть и аббревиатура, и числовое смещение — у LLM однозначный контекст.
Это важно для команд из разных регионов: оператор, спрашивающий Claude «вчерашняя авария началась до или после обеда?», получит согласованный ответ независимо от того, кто из коллег задаёт вопрос. Полная модель — в разделе Часовые пояса.
Доступные инструменты
У каждого инструмента один или несколько тегов, и именно тег подставляется в include_tags. Поэтому числа ниже в сумме больше 153 — инструмент, который и читает мониторы, и пишет инциденты, посчитан в обоих.
Фильтрация по тегам новое
153 инструментов — это полное покрытие API, но не каждому агенту нужны все сразу. Теги позволяют получить только нужную группу инструментов одним параметром в URL:
- Cursor (лимит 40 тулов) — подключайте с нужными тегами вместо всех 153
- Cline — меньше инструментов в контексте = точнее выбор и меньше расход токенов
- CI/CD агенты — подключите только monitors,incidents для автоматизации без лишнего
- Claude Code / Claude Desktop — работает автоматически (defer_loading), теги не нужны
Все 153 инструментов (по умолчанию)
https://pingzen.dev/mcp/Мониторы и инциденты (36 инструментов, влезает в лимит Cursor в 40)
https://pingzen.dev/mcp/?include_tags=monitors,incidentsМониторинг + инциденты + статус (для автоматизации)
https://pingzen.dev/mcp/?include_tags=monitors,incidents,status_pagesВсё кроме авторизации
https://pingzen.dev/mcp/?exclude_tags=authПоиск инструментов новое
AI-агенту не нужно перебирать все 153 определений — search_tools находит нужный инструмент по описанию задачи. Агент спрашивает «что умеет делать сервер с SSL?» и получает ранжированный список.
Пример:
search_tools({ "query": "SSL certificate", "top_k": 5 })
→ create_monitor (score: 4.2), get_monitor_sla (score: 2.1), ...Поддерживает фильтрацию по тегу — можно искать только среди оповещений или только среди мониторов.
Claude Code использует search_tools автоматически через defer_loading — все 153 инструментов доступны без переполнения контекста. Настройка не требуется.
Примеры запросов
- “Покажи все мои мониторы”
- “Создай HTTP монитор для example.com”
- “Какой аптайм у моих сайтов?”
- “Настрой Telegram оповещение для монитора”
- “Покажи открытые инциденты”
- “Выгрузи все мои мониторы в CSV”
- “Импортируй мониторы из моего экспорта UptimeRobot” (сначала dry-run-предпросмотр, потом реальный импорт)
Решение проблем
Браузер открывается, но я не могу войти
Получаю ошибку аутентификации (401)
Таймаут подключения
Инструменты не отображаются
Cline не поддерживает OAuth
Поддержка клиентов
| Клиент | OAuth | API Key |
|---|---|---|
| Claude Code | ✓ | ✓ |
| Cursor | ✓ | ✓ |
| VS Code | ✓ | ✓ |
| Claude Desktop | ✓ | ✓ |
| Windsurf | ✓ | ✓ |
| Cline | ✗ | ✓ |
Code Mode экспериментальный
Вместо вызова инструментов по одному, AI-агент пишет Python-скрипт, который выполняет несколько вызовов за один раз в песочнице. Промежуточные данные (список из 300 мониторов, отчёт) остаются в sandbox и не засоряют контекстное окно.
Подключение:
https://pingzen.dev/mcp/code/Что видит AI-агент (4 мета-инструмента вместо 153):
search("monitor uptime") → create_monitor, get_uptime_stats, ...
get_schema(["create_monitor"]) → { parameters: { url, protocol, ... } }
execute("""
monitors = await call_tool("list_monitors", {})
down = [m for m in monitors if m["status"] == "down"]
return f"{len(down)} monitors down"
""")Использует FastMCP 4.0 + Monty sandbox (Rust, 15 сек таймаут, 50MB памяти). Отдельный endpoint — основной /mcp/ работает как прежде.
Интеграция с платформами
Для интеграции PingZen MCP в вашу AI-платформу (ExecAI, собственный MCP-клиент и др.) используйте OAuth 2.0 или API-ключ.
Минимальная интеграция — одна строка:
Транспорт: streamable-http | Авторизация: OAuth 2.0 (PKCE) или API-ключ (pz_*)
OAuth 2.0 Endpoints
| Назначение | Метод | URL |
|---|---|---|
| MCP Protocol | POST | https://pingzen.dev/mcp/ |
| Protected Resource (RFC 9728) | GET | https://pingzen.dev/.well-known/oauth-protected-resource/mcp |
| Authorization Server (RFC 8414) | GET | https://pingzen.dev/mcp/.well-known/oauth-authorization-server |
| Dynamic Client Registration | POST | https://pingzen.dev/mcp/register |
| Authorization | GET | https://pingzen.dev/mcp/authorize |
| Token Exchange | POST | https://pingzen.dev/mcp/token |
| Token Revocation | POST | https://pingzen.dev/mcp/revoke |
Как работает OAuth
- Платформа отправляет POST /mcp/ без авторизации → получает 401 с resource_metadata URL
- Читает RFC 9728 + RFC 8414 метаданные → узнаёт все OAuth endpoints
- Регистрируется через DCR (POST /mcp/register) → получает client_id + client_secret
- Перенаправляет пользователя на /mcp/authorize с PKCE code_challenge
- Пользователь входит в PingZen (Google, Яндекс, Telegram или email) и нажимает «Разрешить»
- Браузер редиректит обратно на платформу с authorization code
- Платформа обменивает code + code_verifier на access_token (1 час) и refresh_token (90 дней)
Данные и безопасность
Что хранит ваша платформа:
- • client_id и client_secret (свои, от DCR)
- • access_token — JWT, срок жизни 1 час
- • refresh_token — срок жизни 90 дней
Платформа не получает пароль, email и персональные данные пользователя.
Что хранит PingZen:
- • Аккаунт пользователя (создаётся им самим)
- • OAuth-клиент платформы (client_id, redirect_uri)
- • Хэши refresh_token (SHA-256)
- • Мониторы, оповещения, инциденты пользователя
Пользователь может отозвать доступ платформы в любой момент.
Важно: платформа не создаёт аккаунт пользователя. Пользователь сам регистрируется или входит на pingzen.dev через consent page (Google, Яндекс, Telegram или email). Это стандартная модель OAuth 2.0.
Манифест (server.json)
Полный манифест для регистрации PingZen MCP на вашей платформе:
server.json
{
"name": "dev.pingzen/mcp",
"title": "PingZen Uptime Monitoring",
"description": "Monitor websites, APIs and services with 153 tools across 23 protocols",
"version": "0.14.1",
"websiteUrl": "https://pingzen.dev",
"icons": [
{
"src": "https://pingzen.dev/android-chrome-192x192.png",
"mimeType": "image/png",
"sizes": ["192x192"]
}
],
"remote": {
"type": "streamable-http",
"url": "https://pingzen.dev/mcp/",
"oauth": {
"discoveryUrl": "https://pingzen.dev/.well-known/oauth-protected-resource/mcp",
"authorizationUrl": "https://pingzen.dev/mcp/authorize",
"tokenUrl": "https://pingzen.dev/mcp/token",
"registrationUrl": "https://pingzen.dev/mcp/register",
"revocationUrl": "https://pingzen.dev/mcp/revoke",
"scopes": ["mcp"],
"pkceRequired": true,
"codeChallengeMethod": "S256"
}
},
"features": { "tools": 153, "resources": 9, "prompts": 3, "protocols": 23 },
"categories": ["monitoring", "devops", "infrastructure", "uptime"],
"languages": ["en", "ru"]
}