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:
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:
{
"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
Zatím žádné komentáře.