Skip to main content
Glama
MSPbotsAI

covedataprotection-mcp

by MSPbotsAI

covedataprotection-mcp

MCP-Server für Cove Data Protection (die Backup-/BDR-Plattform von N-able, ehemals N-able Backup / Backup Manager). Stellt die JSON-RPC-Management-Service-API des Backup Managers als MCP-Tools bereit.

Überblick

  • Zustandsloser HTTP-Dienst. Es werden niemals Anmeldedaten gespeichert – jede Anfrage übermittelt ihre eigenen Anmeldedaten über Header, die nur für die Lebensdauer dieser einen Anfrage verwendet werden.

  • Unterstützt gleichzeitige Anfragen; die Isolierung der Anmeldedaten pro Anfrage erfolgt über Python-contextvars, nicht über eine globale/geteilte Client-Instanz.

  • Einstiegspunkte: POST /mcp (MCP-Protokoll) und GET /health (Health-Check).

  • Standardport: 8080 (konfigurierbar über MCP_HTTP_PORT).

Related MCP server: spanning-mcp

Umfang

26 Tools, reduziert gegenüber einem ursprünglichen 247-Tool-Build mit vollem Schema (2026-08-04). MSPbots' eigene Integration für Cove Data Protection (live bestätigt über /web/int/sys/integration/api/list gegen die Produktionsplattform) ist mit genau 6 APIs konfiguriert, die auf die folgenden zugrunde liegenden JSON-RPC-Methoden abgebildet sind:

Von MSPbots konfigurierte API

JSON-RPC-Methode

Hier abgedeckt?

Cove Data Protection Devices

EnumerateAccounts

Cove Data Protection Devices Detail

GetAccountInfoById

Cove Data Protection Device Statistics

EnumerateAccountStatistics

Cove Data Protection Users

EnumerateUsers

Cove Data Protection Customers

EnumeratePartners

Cove Data Protection Query Sessions

QuerySessions

❌ Reporting Service, nicht Management Service – siehe Bekannte Lücken

Die anderen 5 oben bestätigten echten Methoden wurden unverändert übernommen, plus Core-CRUD derselben Kategorie (Add/Get/Modify/Remove) für jeden der drei Ressourcentypen, die sie betreffen – accounts (9 Tools), partners (9 Tools), users (7 Tools) – plus GetServerInfo (1 Tool, Konnektivitäts-Selbsttest, verwendet für die ursprüngliche Live-Verifizierung unten). Jede andere Kategorie aus dem ursprünglichen 247-Tool-Build (notifications, storage_nodes, contacts, storage, view_delivery, labels, jobs, custom_columns, branding, products, eula, locations, countries, audit, email, regions, features, permissions, templates – 19 Kategorien, ~221 Tools) wurde vollständig entfernt, da sie von MSPbots nicht verwendet wird und nicht in den Zweck dieses Servers fällt.

Authentifizierung

Cove besitzt keinen statischen, langlebigen API-Schlüssel. Stattdessen beginnt jede Sitzung mit einem Login-Aufruf (partner + username + password), der ein kurzlebiges visa-Token zurückgibt (gültig ~15 Minuten), das jeden nachfolgenden Aufruf begleiten muss.

Dieser Server speichert kein visa über Anfragen hinweg zwischen – ein solches Zwischenspeichern würde bedeuten, Sitzungszustand zu persistieren, was der Anforderung „keine Speicherung von Anmeldedaten" widerspricht. Stattdessen führt api_client.CoveClient.call() bei jedem Tool-Aufruf ein neues Login durch und verwirft das resultierende visa anschließend – ein zusätzlicher HTTP-Roundtrip pro Aufruf wird gegen vollständige Zustandslosigkeit eingetauscht.

Header-Autorisierungsparameter

Header

Typ

Erforderlich

Standardwert

Enum-Werte

Feldbeschreibung

Beispiel

X-CoveDataProtection-Partner

string

Ja

Keiner

Keine

Das partner-Feld von Login (der Mandant/Partnername der Anmeldung)

Acme MSP (admin@example.com)

X-CoveDataProtection-Username

string

Ja

Keiner

Keine

Das username-Feld von Login

mspbots

X-CoveDataProtection-Password

string

Ja

Keiner

Keine

Das password-Feld von Login

••••••••

Fehlt einer der drei Header, wird 401 zurückgegeben:

{
  "error": "Missing credentials",
  "message": "This server requires the X-CoveDataProtection-Partner, X-CoveDataProtection-Username, and X-CoveDataProtection-Password headers",
  "required_headers": ["X-CoveDataProtection-Partner", "X-CoveDataProtection-Username", "X-CoveDataProtection-Password"],
  "optional_headers": []
}

Umgebungsvariablen

Variable

Typ

Erforderlich

Standardwert

Beschreibung

MCP_HTTP_PORT

int

Nein

8080

HTTP-Listening-Port

MCP_HTTP_HOST

string

Nein

0.0.0.0

HTTP-Listening-Adresse

COVEDATAPROTECTION_BASE_URL

string

Nein

https://api.backup.management/jsonapi

JSON-RPC-Endpunkt des Cove Management Service

MCP-Endpunkt

  • POST /mcp – MCP-Protokoll (streamabler HTTP-Transport)

  • GET /health – Health-Check, gibt exakt {"status": "ok"} zurück (reine lokale Liveness-Prüfung; ruft die Cove-API nicht auf)

Tool-Liste

Toolnamen folgen dem Muster covedataprotection_<snake_case_method_name> – z. B. wird die JSON-RPC-Methode EnumerateAccountStatistics zu covedataprotection_enumerate_account_statistics. Parameternamen entsprechen den Parameternamen der jeweiligen JSON-RPC-Methode (camelCase → snake_case); komplexe Parameter mit Struct-/Enum-Typ werden als dict/str akzeptiert und unverändert an die Hersteller-API durchgereicht – was das in der Praxis bedeutet, siehe Bekannte Lücken.

Kategorie

Tool

JSON-RPC-Methode

Parameter

Konten

covedataprotection_add_account

AddAccount

account_info(erforderlich), home_node_info(erforderlich)

Konten

covedataprotection_enumerate_account_statistics

EnumerateAccountStatistics

query(erforderlich)

Konten

covedataprotection_enumerate_accounts

EnumerateAccounts

partner_id(erforderlich)

Konten

covedataprotection_get_account_features

GetAccountFeatures

account_id(erforderlich)

Konten

covedataprotection_get_account_info

GetAccountInfo

name(erforderlich), password(erforderlich)

Konten

covedataprotection_get_account_info_by_id

GetAccountInfoById

account_id(erforderlich)

Konten

covedataprotection_modify_account

ModifyAccount

account_info(erforderlich), force_remove_custom_column_values_in_old_scope(erforderlich)

Konten

covedataprotection_remove_account

RemoveAccount

account_id(erforderlich)

Konten

covedataprotection_set_account_features

SetAccountFeatures

account_id(erforderlich), features(erforderlich)

Sonstiges

covedataprotection_get_server_info

GetServerInfo

keine

Partner

covedataprotection_add_partner

AddPartner

partner_info(erforderlich), create_default_account(erforderlich)

Partner

covedataprotection_enumerate_child_partners

EnumerateChildPartners

partner_id(erforderlich), fields(erforderlich), partner_filter(erforderlich), range(optional)

Partner

covedataprotection_enumerate_partners

EnumeratePartners

parent_partner_id(erforderlich), fetch_recursively(erforderlich), fields(erforderlich)

Partner

covedataprotection_get_partner_info

GetPartnerInfo

name(erforderlich)

Partner

covedataprotection_get_partner_info_by_id

GetPartnerInfoById

partner_id(erforderlich)

Partner

covedataprotection_get_partner_tree

GetPartnerTree

partner_id(erforderlich), fields(erforderlich), filter(erforderlich), children_limit(erforderlich), partner_filter(erforderlich)

Partner

covedataprotection_get_root_partner_name

GetRootPartnerName

keine

Partner

covedataprotection_modify_partner

ModifyPartner

partner_info(erforderlich), force_remove_custom_column_values_in_old_scope(erforderlich)

Partner

covedataprotection_remove_partner

RemovePartner

partner_id(erforderlich)

Benutzer

covedataprotection_add_user

AddUser

user_info(erforderlich)

Benutzer

covedataprotection_enumerate_user_roles

EnumerateUserRoles

keine

Benutzer

covedataprotection_enumerate_users

EnumerateUsers

partner_ids(erforderlich)

Benutzer

covedataprotection_get_user_info

GetUserInfo

partner_id(erforderlich), name_or_email(erforderlich), password(erforderlich)

Benutzer

covedataprotection_get_user_info_by_id

GetUserInfoById

user_id(erforderlich)

Benutzer

covedataprotection_modify_user

ModifyUser

user_info(erforderlich)

Benutzer

covedataprotection_remove_user

RemoveUser

user_id(erforderlich)

Testbeispiel

# Health check
curl -s http://localhost:8080/health

# Call a tool via the MCP protocol (streamable HTTP) — requires an
# initialize handshake first per the MCP spec; abbreviated example below
# shows the tool-call request body only:
curl -s -X POST http://localhost:8080/mcp \
  -H "X-CoveDataProtection-Partner: <your-partner-name>" \
  -H "X-CoveDataProtection-Username: <your-username>" \
  -H "X-CoveDataProtection-Password: <your-password>" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: <session-id-from-initialize>" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "covedataprotection_get_server_info",
      "arguments": {}
    }
  }'

Erwartet: 200 mit der Serverversion bei gültigen Anmeldedaten; bei ungültigen Anmeldedaten schlägt der Login-Aufruf selbst fehl und jedes Tool gibt eine strukturierte JSON-Fehlerhülle zurück, z. B.:

{"error":{"code":"unauthorized","message":"<vendor error message>","retryable":false}}

code ist einer der festen Werte not_configured / unauthorized / not_found / invalid_argument / rate_limited / upstream_error; retryable teilt dem Aufrufer mit, ob ein erneuter Versuch desselben Aufrufs erfolgreich sein könnte (nur bei rate_limited und upstream_error ist das der Fall). Tools werfen bei Geschäfts- oder Herstellerfehlern niemals Ausnahmen – diese Hülle wird als normale Tool-Ergebniszeichenfolge zurückgegeben.

Live-verifiziert (2026-07-29): covedataprotection_get_server_info (null Parameter) wurde Ende-zu-Ende über diesen laufenden Server mit einem echten Partner/Benutzername/Passwort aufgerufen und gab die tatsächliche Cove-Serverversion zurück – was bestätigt, dass die Login → visa → Methodenaufruf-Pipeline gegen die Live-API funktioniert, nicht nur strukturell.

API-Referenz

Bekannte Lücken

  • Am 2026-08-04 von 247 auf 26 Tools reduziert. Der ursprüngliche Build umfasste jede Methode im Management-Service-Schema. Gemäß einer späteren Scope-Entscheidung wurde dies auf das reduziert, was MSPbots' eigene Produktionsintegrationskonfiguration tatsächlich aufruft (live verifiziert über /web/int/sys/integration/api/list gegen app.mspbots.ai, Integrations-ID 2026570354981494786) plus Kern-CRUD derselben Kategorie – siehe den Scope-Abschnitt oben für die genaue API→Methoden-Zuordnung und die vollständige Liste der entfernten Kategorien. Die entfernten ~221 Tools (notifications, storage_nodes, contacts, storage, view_delivery, labels, jobs, custom_columns, branding, products, eula, locations, countries, audit, email, regions, features, permissions, templates) sind in diesem Build überhaupt nicht enthalten; falls ein zukünftiger Bedarf eines davon erfordert, dokumentiert das ursprüngliche Schema (Schema_23.3.json, unten verlinkt) weiterhin seine exakte Methodensignatur und es kann auf dieselbe Weise wieder hinzugefügt werden, wie die behaltenen Tools generiert wurden.

  • Dies deckt nur den Management Service ab. Coves Getting-Started-Leitfaden beschreibt einen zweiten, separaten Reporting Service ({host}/repserv_json, läuft pro Storage-Node), der Backup-/Restore-Sitzungsstatistiken bereitstellt. MSPbots' eigene Konfiguration ruft einen „Query Sessions"-Bericht gegen diesen Reporting Service auf – er ist nicht Teil des Management-Service-Schemas, aus dem dieser MCP generiert wird, und es wurde kein öffentliches Schema für den Reporting Service gefunden. Dies ist der eine von MSPbots konfigurierte Endpunkt, den dieser MCP nicht abdeckt; er kann hinzugefügt werden, falls die Methodenliste/das Schema des Reporting Service verfügbar wird.

  • Komplexe Struktur-/Enum-Parameter sind untypisiert (dict/str) statt vollständig modelliert. Das Schema definiert 106 Strukturen und 78 Enums; jede einzelne als typisierten Python-Parameter vollständig zu reproduzieren, war außerhalb des Rahmens für einen mechanisch generierten Server. Aufrufer müssen diese dict-Argumente so gestalten, dass sie dem Schema des Anbieters entsprechen (siehe den Abschnitt „Structs" in Schema_23.3.json für exakte Feldnamen) – die Beschreibung jedes solchen Parameters benennt die Struktur, auf die er abbildet, und verweist auf diese Schemadatei.

  • Kein Visa-Caching – siehe den Abschnitt „Authentifizierung" oben. Jeder Tool-Aufruf führt seinen eigenen Login durch, was einfach und vollständig zustandslos ist, aber bedeutet, dass 2 HTTP-Anfragen an den Anbieter pro Tool-Aufruf statt 1 gesendet werden.

  • Alle 26 Tools wurden direkt aus der eigenen Schemadatei des Anbieters codegeneriert, nicht von Hand geschrieben – Parameternamen/-typen sind nur so genau wie dieses Schema. covedataprotection_get_server_info war das eine Tool, das Ende-zu-Ende live verifiziert wurde; der Rest ist strukturell korrekt (Schema validiert, MCP-Protokoll-Tools/list bestätigt), aber nicht einzeln gegen echte Daten rauchgetestet.

Hinweise zur Einhaltung der MCP-SOP des Anbieters

  • Die Tool-Anzahl (26) überschreitet die „sollte ≤20 sein"-Richtlinie der SOP. Bereits von 247 auf 26 reduziert (siehe oben); die verbleibenden 26 bilden 1:1 auf unterschiedliche JSON-RPC-Methoden über 3 Ressourcendomänen (Konten/Partner/Benutzer) ab, die nicht zusammengeführt werden können, ohne erforderliche Parameterunterscheidungen zu verlieren (z. B. get_*_info nach Name+Passwort vs. get_*_info_by_id nach numerischer ID sind unterschiedliche Lookup-Schlüssel, nicht dasselbe Tool mit einem optionalen Parameter).

  • Auf keinem Tool existiert ein limit-/page_size-Skalarparameter. Keine der 26 Methoden stellt einen erstklassigen numerischen Seitengrößenparameter bereit – das eine Paginierungsförmige Feld (range auf EnumerateChildPartners) ist eine undurchsichtige Anbieterstruktur, die unverändert durchgereicht wird, und children_limit auf GetPartnerTree wird ebenfalls uninterpretiert direkt an den Anbieter durchgereicht. Es gibt nichts, das dieser Server gegen die Standard-50-/Hart-Obergrenze-200-Richtlinie der SOP klemmen könnte; falls sich herausstellt, dass die range-/Limit-Strukturen des Anbieterschemas ein eigenes dokumentiertes Maximum pro Seite haben, sollte das hier durchgesetzt werden, statt der generischen Fallback-Obergrenze der SOP.

  • Kein Credential-Env-Var-Fallback. config.Settings hat kein Partner-/Benutzername-/Passwort-Feld; get_client_from_context gibt None zurück (→ not_configured-Envelope), wann immer die contextvar pro Anfrage nicht gesetzt ist. Es gibt keinen Codepfad, der auf eine Umgebungsvariable zurückfällt.

  • Tool-Anmerkungen: jedes Lesetool (get_*, enumerate_*) ist mit readOnlyHint=True, idempotentHint=True markiert; add_*-Tools sind readOnlyHint=False, idempotentHint=False (zweimaliges Erstellen ist keine No-op); modify_*-/set_*-/remove_*-Tools sind readOnlyHint=False, destructiveHint=True, idempotentHint=True.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for Spanning Cloud Backup — M365/GWS/Salesforce SaaS backup, restore, and audit. Enables AI assistants to manage and monitor cloud backup protection via the Spanning API.
    Apache 2.0
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server that exposes Acronis Cyber Protect Cloud APIs as 14 read-only tools for managing alerts, tasks, agents, resources, policies, and tenants.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Dropsuite (NinjaOne SaaS Backup) that exposes read-only GET endpoints to list backup accounts, users, contacts, calendars, tasks, OneDrives, SharePoint domains, and Teams/Groups domains via reseller API tokens.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MSPbotsAI/covedataprotection-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server