Zpět na domů

MCP server PingZen: 126 nástrojů pro monitorování

PingZen převeden na MCP server s 126 nástroji pro AI agenty. Podpora STDIO a HTTP, OAuth 2.0, synchronní volání. Příklady kódu a technické detaily pro integraci do pracovního procesu developerů.

PingZen jako MCP server: monitorování v AI agentech
Advertisement 728x90

Integrace PingZen jako MCP serveru: 126 nástrojů pro AI agenty

MCP server běží v jednom procesu s hlavním aplikací, ale má izolované koncové body. STDIO je vhodné pro desktopové agenty, které spouští Python skripty prostřednictvím stdin/stdout. HTTP přenos je vestavěn do FastAPI pro cloudové služby.

Registrace 126 nástrojů probíhá přes dekorátory SDK. Nástroje jsou seskupeny:

  • Monitory: create_monitor, update_monitor, delete_monitor, get_monitor_status, list_monitors, pause_monitor, resume_monitor.
  • Upozornění: create_alert, update_alert, test_alert, list_alerts.
  • Incidenty: list_incidents, get_incident_details, resolve_incident, add_incident_update.
  • Srdce: create_heartbeat, send_heartbeat_ping, get_heartbeat_status.
  • Stavové stránky: create_status_page, add_monitor_to_status_page, update_status_page.
  • Webhooky: create_webhook, list_webhooks.
  • Zprávy: create_scheduled_report, get_report_history.
  • API klíče: create_api_key, revoke_api_key.

Příklad registrace:

Google AdInline article slot
from mcp.server import Server
import mcp.types as types

server = Server("pingzen-mcp")

@server.list_tools()
async def handle_list_tools() -> list[types.Tool]:
    return [
        types.Tool(
            name="create_monitor",
            description="Vytvořit nový monitor",
            inputSchema={
                "type": "object",
                "properties": {
                    "name": {"type": "string"},
                    "type": {"type": "string", "enum": ["http", "tcp", "udp", "icmp", "dns", "smtp", "transaction", ...]},
                    "target": {"type": "string"},
                    "interval": {"type": "integer", "minimum": 60},
                },
                "required": ["name", "type", "target"]
            }
        ),
    ]

@server.call_tool()
async def handle_call_tool(name: str, arguments: dict) -> list[types.TextContent]:
    if name == "create_monitor":
        monitor = await monitor_service.create(arguments)
        return [types.TextContent(type="text", text=json.dumps(monitor.to_dict()))]

Argumenty se předávají jako JSON schéma, což zjednodušuje popis složitých protokolů jako Transaction s Playwrightem.

Autentizace přes OAuth 2.0

Implementováno podle RFC 9728 s nulovou konfigurací. Agent otevře prohlížeč pro ověření přes Telegram, Google nebo Yandex. Po souhlasu je vydan token. Pro CI/CD jsou k dispozici API klíče prostřednictvím proměnných prostředí. Stačí zadat URL https://pingzen.dev/mcp v nastavení agenta.

Praktické použití nástrojů

Vytvoření HTTP monitoru:

Google AdInline article slot
{
  "name": "create_monitor",
  "arguments": {
    "name": "Habr",
    "type": "http",
    "target": "https://habr.com",
    "interval": 60,
    "alert_channels": ["telegram"]
  }
}

Výsledek: ID monitoru a potvrzení. Stejně tak pro list_monitors, resolve_incident nebo heartbeat s intervalem 24 hodin a grace period 1 hodina.

Technické detaily implementace

  • Validace: JSON Schema vyžaduje přísné typy. Převod je explicitně proveden v handleru (interval jako integer), i když AI posílá řetězce.
  • Synchronnost: Všechny nástroje jsou synchronní s časovými limitami. Bez pozadí pro jednoduchost.
  • Chyby: Centrální zprávy v errors.py:
_ERROR_MESSAGES = {
    "INVALID_PROTOCOL": "Neplatný typ monitoru '{type}'. Dostupné: http, tcp, udp, icmp, dns, smtp, transaction, ...",
    "TIMEOUT": "Požadavek vypršel po {timeout} sekundách",
}
  • Logy: Přes stderr pro STDIO, s argumenty volání.

Co je důležité

  • 126 nástrojů pokrývá kompletní cyklus: od vytvoření monitorů až po správu incidentů a zpráv.
  • Dva přenosy zajišťují flexibilitu pro lokální i cloudové agenty.
  • OAuth zero-config minimalizuje konfiguraci; API klíče pro automatizaci.
  • Synchronní model s časovými limity a přísnou validací zaručuje předvídatelnost.
  • Jednoduchá integrace do CI/CD a IDE bez přepínání kontextu.

— Editorial Team

Advertisement 728x90

Číst dál