Zurück zur Startseite

MCP-Server PingZen: 126 Überwachungstools

PingZen in MCP-Server mit 126 Tools für KI-Agenten umgewandelt. Unterstützung für STDIO und HTTP, OAuth 2.0, synchrone Aufrufe. Code-Beispiele und technische Details für die Integration in den Workflow von Entwicklern.

PingZen als MCP-Server: Überwachung in KI-Agenten
Advertisement 728x90

PingZen als MCP-Server integrieren: 126 Tools für KI-Agenten

Der MCP-Server läuft neben der Hauptanwendung in einem einzigen Prozess, aber mit isolierten Endpunkten. STDIO ist ideal für Desktop-Agenten, die Python-Skripte über stdin/stdout starten. Der HTTP-Transport ist in FastAPI bereits eingebaut und eignet sich perfekt für Cloud-basierte Dienste.

Die Registrierung der 126 Tools erfolgt über SDK-Decorator. Die Tools sind wie folgt gruppiert:

  • Monitore: create_monitor, update_monitor, delete_monitor, get_monitor_status, list_monitors, pause_monitor, resume_monitor.
  • Benachrichtigungen: create_alert, update_alert, test_alert, list_alerts.
  • Vorfälle: list_incidents, get_incident_details, resolve_incident, add_incident_update.
  • Heartbeats: create_heartbeat, send_heartbeat_ping, get_heartbeat_status.
  • Statusseiten: create_status_page, add_monitor_to_status_page, update_status_page.
  • Webhooks: create_webhook, list_webhooks.
  • Berichte: create_scheduled_report, get_report_history.
  • API-Schlüssel: create_api_key, revoke_api_key.

Beispielregistrierung:

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="Neuen Monitor erstellen",
            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()))]

Die Argumente werden als JSON-Schema übergeben, was die Definition komplexer Protokolle wie Transaction mit Playwright vereinfacht.

OAuth 2.0-Authentifizierung

OAuth 2.0 wird gemäß RFC 9728 ohne Konfiguration implementiert. Agenten öffnen einen Browser, um sich über Telegram, Google oder Yandex zu authentifizieren. Nach Zustimmung wird ein Token ausgestellt. Für CI/CD-Pipelines stehen API-Schlüssel über Umgebungsvariablen zur Verfügung. Setzen Sie einfach die URL https://pingzen.dev/mcp in den Agenteneinstellungen.

Praktische Tool-Nutzung

Erstellen eines HTTP-Monitors:

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

Ergebnis: Monitor-ID und Bestätigung. Gleiches Verhalten gilt für list_monitors, resolve_incident oder Heartbeat mit einer 24-Stunden-Intervall und 1-Stunde-Grace-Periode.

Implementierungsdetails

  • Validierung: JSON Schema sorgt für strikte Typisierung. In den Handler werden explizite Typumwandlungen angewendet (z. B. Interval als Integer), auch wenn die KI Zeichenketten zurückgibt.
  • Synchronisation: Alle Tools sind synchron mit Timeout. Keine Hintergrundaufgaben – für Einfachheit.
  • Fehler: Zentralisierte Fehlermeldungen sind in errors.py definiert:
_ERROR_MESSAGES = {
    "INVALID_PROTOCOL": "Ungültiger Monitor-Typ '{type}'. Verfügbar: http, tcp, udp, icmp, dns, smtp, transaction, ...",
    "TIMEOUT": "Anfrage abgelaufen nach {timeout} Sekunden",
}
  • Protokollierung: Ausgabe erfolgt über stderr bei STDIO, inklusive Aufrufargumente.

Wichtige Erkenntnisse

  • Die 126 Tools decken den gesamten Lebenszyklus ab – von Monitor-Erstellung bis zur Vorfalldokumentation und Berichterstattung.
  • Zwei Transportoptionen gewährleisten Flexibilität sowohl für lokale als auch für Cloud-Agenten.
  • Zero-Config-OAuth reduziert den Einrichtungsaufwand; API-Schlüssel ermöglichen Automatisierung.
  • Synchrones Design mit Timeouts und strikter Validierung sorgt für vorhersehbares Verhalten.
  • Nahtlose Integration in CI/CD und IDEs ohne Kontextwechsel.

— Editorial Team

Advertisement 728x90

Weiterlesen