Schnellstart
1. Management-Key erstellen
Öffne in der App API-Keys → Neuer API-Key, wähle den Typ „Management“ und kopiere den Key. Er beginnt mit ue_live_ und wird nur einmal angezeigt. Log-Ingest-Keys (ue_ingest_) funktionieren hier nicht.
2. Server im Client eintragen
Endpoint: https://api.uptimeeye.com/mcp (Streamable HTTP), authentifiziert mit Authorization: Bearer ue_live_…. In Claude Code ist das ein Befehl:
claude mcp add --transport http uptimeeye https://api.uptimeeye.com/mcp \
--header "Authorization: Bearer ue_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"3. Fragen
Probier „Liste meine UptimeEye-Monitore auf“ – und beschreib dann, was überwacht werden soll. Der Assistent schaut zuerst deine Benachrichtigungskanäle nach, weil jeder Monitor einen braucht.
Client verbinden
Claude Code
Der Befehl aus dem Schnellstart richtet den Server nur für dich ein. Mit --scope project teilst du ihn über .mcp.json mit deinem Team, und der Key landet nicht in dieser Datei: In einfachen Anführungszeichen steht ${UPTIMEEYE_API_KEY} unverändert in der Datei, und Claude Code liest den Key beim Start aus dieser Umgebungsvariable.
claude mcp add --transport http --scope project uptimeeye https://api.uptimeeye.com/mcp \
--header 'Authorization: Bearer ${UPTIMEEYE_API_KEY}'Cursor
Global in ~/.cursor/mcp.json oder pro Projekt in .cursor/mcp.json:
{
"mcpServers": {
"uptimeeye": {
"url": "https://api.uptimeeye.com/mcp",
"headers": { "Authorization": "Bearer ue_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
}
}
}VS Code (GitHub Copilot im Agent-Modus)
VS Code fragt einmal nach dem Key und speichert ihn sicher:
{
"inputs": [
{ "type": "promptString", "id": "uptimeeye-key", "description": "UptimeEye API key (ue_live_…)", "password": true }
],
"servers": {
"uptimeeye": {
"type": "http",
"url": "https://api.uptimeeye.com/mcp",
"headers": { "Authorization": "Bearer ${input:uptimeeye-key}" }
}
}
}Claude Desktop
Claude Desktop startet nur lokale Server und verbindet sich deshalb über die mcp-remote-Bridge (braucht Node.js). Trag das in claude_desktop_config.json ein und starte die App neu:
{
"mcpServers": {
"uptimeeye": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.uptimeeye.com/mcp", "--header", "Authorization:${UPTIMEEYE_AUTH}"],
"env": { "UPTIMEEYE_AUTH": "Bearer ue_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
}
}
}Andere Clients: Alles, was Remote-MCP-Server über Streamable HTTP mit einem eigenen Header unterstützt, funktioniert mit dem Endpoint und Header oben.
Verfügbare Tools
Die Tools tragen MCP-Annotationen: Lesende Tools sind als read-only markiert, Lösch-Tools als destruktiv, sodass gut gebaute Clients vor dem Ausführen nachfragen.
| Tool | Was es tut |
|---|---|
| list_monitors | Alle Uptime-Monitore mit ID, Name, URL, Status und Prüfintervall. |
| get_monitor | Vollständige Konfiguration eines Monitors. |
| create_monitor | HTTP-, TCP-Port- (host:port), DNS- oder ICMP-Check mit Intervall, Timeout, erwartetem Statuscode, maximaler Antwortzeit, Regionen und Tags. |
| update_monitor | Ändert beliebige der Felder oben; weggelassene Felder bleiben, wie sie sind. |
| pause_monitor / resume_monitor | Stoppt und startet Checks und Alerts wieder. |
| delete_monitor | Destruktiv – der Assistent fragt, bevor er es aufruft. |
| list_scheduled_tasks | Alle Cron-Job- und Heartbeat-Monitore. |
| get_scheduled_task | Details eines Tasks, inklusive der URL, die dein Job aufruft. |
| create_scheduled_task | Heartbeat-Monitor mit einfachem Intervall (alle 5 Minuten) oder Cron-Ausdruck mit Zeitzone, plus Karenzzeit. |
| update_scheduled_task | Ändert Zeitplan, Karenzzeit, Channel oder Tags. |
| pause_scheduled_task / resume_scheduled_task | Keine Alerts, solange pausiert. |
| delete_scheduled_task | Destruktiv – der Assistent fragt, bevor er es aufruft. |
| list_notification_channels | Alert-Ziele. Monitore und Tasks verweisen per ID auf einen Channel. |
| create_notification_channel | Channel mit E-Mail-Empfängern und/oder einer Webhook-URL. |
| delete_notification_channel | Destruktiv; schlägt fehl, solange Monitore den Channel noch nutzen. |
| list_locations | Regionen, aus denen ein Monitor prüfen kann, z. B. eu-central-1, und ob sie gerade bedient werden. |
| list_status_pages | Deine Status Pages (nur lesend). |
| list_incidents | Incidents, optional nach Status gefiltert (nur lesend). |
Dein Job schickt einem Scheduled Task seine Heartbeats: GET https://api.uptimeeye.com/v1/beat/{taskId} bei Erfolg. Optional: /start zu Beginn des Laufs und /fail, um einen fehlgeschlagenen Lauf zu melden und sofort einen Alert auszulösen. GET, POST und HEAD werden alle akzeptiert.
Logs-Tools
Fünf lesende Tools durchsuchen die Logs, die deine Services an UptimeEye Logs senden. Abfragen sind LogsQL, z. B. service:api level:error. Der Zeitraum wird mit start und end (RFC 3339) gesetzt und ist standardmäßig die letzte Stunde; jedes Ergebnis nennt den tatsächlich durchsuchten Zeitraum, den die Aufbewahrungsdauer deines Plans verkürzen kann.
| Tool | Was es tut |
|---|---|
| query_logs | Durchsucht die Logs mit einer LogsQL-query, neueste zuerst. Optional start, end und limit (Standard 50, höchstens 200). Lange Werte werden gekürzt, und das Ergebnis sagt, ob Zeilen oder Werte gekürzt wurden. |
| logs_histogram | Log-Volumen über die Zeit für eine query (etwa 48 Intervalle), um zu sehen, wann Fehler begannen oder sprunghaft anstiegen. |
| logs_fields | Welche Felder es in den passenden Logs gibt und wie viele Einträge jedes davon tragen, damit Abfragen existierende Feldnamen nutzen. |
| logs_facets | Die häufigsten Werte eines field (z. B. service, level, host), optional eingeschränkt durch eine query. limit Standard 10, höchstens 50. |
| get_log_context | Kontext zu einem entry aus einem query_logs-Ergebnis: seine Fehlersignatur, wie oft er in den letzten 24 Stunden auftrat, und zugehörige Einträge (gleicher Trace oder Request, sonst die vorangehenden Zeilen desselben Service). |
Beispiel-Prompts
- „Überwache https://shop.example.com jede Minute aus eu-central-1 und us-east-1 und schick mir eine E-Mail an ops@example.com, wenn die Seite down oder langsamer als 2 Sekunden ist.“
- „Leg einen Heartbeat für unser nächtliches Backup um 02:30 Europe/Berlin mit 30 Minuten Karenzzeit an und gib mir die curl-Zeile für die Crontab.“
- „Schick mir einen Alert, wenn unser Postgres auf db.example.com:5432 keine Verbindungen mehr annimmt – prüfe jede Minute.“
- „Welche Monitore sind gerade down, und gibt es offene Incidents?“
- „Der Checkout-Monitor ist um 14:05 ausgefallen. Was hat der Checkout-Service um diese Zeit geloggt, und ist der Fehler neu?“
- „Tagge jeden Monitor, dessen URL staging enthält, mit
stagingund pausiere sie.“ - „Verschiebe alle Monitore vom Channel ‚Old alerts‘ nach ‚On-call‘ und lösche dann ‚Old alerts‘.“
Ein Projekt mit einem AI-Agent einrichten
Coding-Agents (Claude Code, Cursor, Copilot) können dein Repository und die UptimeEye-Doku gleichzeitig lesen. Füge einen dieser Prompts in den Agent in deinem Projekt ein; Endpoints, Jobs und Stack findet er selbst.
Jeden öffentlichen Endpoint überwachen
Read https://uptimeeye.com/llms.txt. Find the public URLs and health endpoints of this project (routes, deployment config, README). Using the UptimeEye MCP server, create one monitor per endpoint: 30 s interval if my plan allows it, expected status 200, attached to the notification channel I pick. Show me the list before you create anything.
Heartbeats für Cron-Jobs ergänzen
Find every cron job, scheduled worker and CI schedule in this repository. For each one, create an UptimeEye scheduled task via MCP with the matching schedule and a sensible grace period. Then change the job so it calls https://api.uptimeeye.com/v1/beat/<taskId> on success and https://api.uptimeeye.com/v1/beat/<taskId>/fail on error.
Logs senden
Add UptimeEye log shipping to this project. Follow https://uptimeeye.com/docs/logs/ingest and pick the integration guide that matches our stack (Kubernetes, Docker, OpenTelemetry, Node.js, Python, Go, Spring Boot, .NET, …). Read the ingest key from the environment variable UPTIMEEYE_INGEST_KEY and use service and env as stream fields.
ue_ingest_…) erstellst du in der App unter API-Keys – der MCP-Server kann keine Keys anlegen.Rechte & Sicherheit
- Ein Management-Key handelt für eine Organisation mit denselben Rechten wie die REST-API. Erstelle einen Key pro Client, damit du sie einzeln widerrufen kannst.
- Ein Management-Key kann alle Logs der Organisation lesen, innerhalb der Aufbewahrungsdauer deines Plans, über die Logs-Tools und die REST-API. Eine engere Log-Berechtigung gibt es nicht, behandle den Key also wie die Logs selbst.
- Lösch-Tools sind als destruktiv annotiert, und der Server weist den Assistenten an, vorher ausdrücklich nachzufragen.
- Plan-Limits gelten genau wie in der App – der Assistent kann deine Monitor-Anzahl oder dein Mindestintervall nicht überschreiten.
- Keys werden gehasht gespeichert; der Klartext-Key wird nur einmal beim Erstellen angezeigt. Anfragen werden in der EU (Deutschland) verarbeitet.
Lieber Infrastructure as Code? Dieselben Operationen gibt es über den Terraform-Provider.
FAQ
Was ist der UptimeEye MCP-Server?
https://api.uptimeeye.com/mcp (Streamable HTTP). AI-Assistenten, die MCP sprechen, können Monitore, Scheduled Tasks und Benachrichtigungskanäle deiner Organisation auflisten, anlegen und ändern – dieselben Operationen wie über die REST-API und den Terraform-Provider – und die Logs der Organisation durchsuchen.Welchen Plan brauche ich?
Welche Clients funktionieren?
Authorization-Header senden kann: Claude Code, Cursor, VS Code, Windsurf und weitere. Clients, die nur lokale stdio-Server unterstützen (wie Claude Desktop), verbinden sich über die mcp-remote-Bridge, die Node.js braucht. Web-Connectoren, die OAuth verlangen, werden noch nicht unterstützt.Kann der Assistent Slack-, Teams- oder PagerDuty-Alerts einrichten?
Kann der Assistent meine Logs lesen?
query_logs, logs_histogram, logs_fields, logs_facets und get_log_context durchsuchen deine Logs mit LogsQL, zeigen ihr Volumen über die Zeit und ordnen einen einzelnen Fehlereintrag ein. Ein Management-Key kann alle Logs der Organisation lesen. Um zuerst Logs zu senden, folge der Logs-Doku – ein Coding-Agent kann das für dich einrichten (siehe die Prompts oben).