covedataprotection-mcp
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) undGET /health(Health-Check).Standardport:
8080(konfigurierbar überMCP_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 |
| ✅ |
Cove Data Protection Devices Detail |
| ✅ |
Cove Data Protection Device Statistics |
| ✅ |
Cove Data Protection Users |
| ✅ |
Cove Data Protection Customers |
| ✅ |
Cove Data Protection Query Sessions |
| ❌ 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 |
| string | Ja | Keiner | Keine | Das |
|
| string | Ja | Keiner | Keine | Das |
|
| string | Ja | Keiner | Keine | Das |
|
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 |
| int | Nein |
| HTTP-Listening-Port |
| string | Nein |
| HTTP-Listening-Adresse |
| string | Nein |
| 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 |
| AddAccount | account_info(erforderlich), home_node_info(erforderlich) |
Konten |
| EnumerateAccountStatistics | query(erforderlich) |
Konten |
| EnumerateAccounts | partner_id(erforderlich) |
Konten |
| GetAccountFeatures | account_id(erforderlich) |
Konten |
| GetAccountInfo | name(erforderlich), password(erforderlich) |
Konten |
| GetAccountInfoById | account_id(erforderlich) |
Konten |
| ModifyAccount | account_info(erforderlich), force_remove_custom_column_values_in_old_scope(erforderlich) |
Konten |
| RemoveAccount | account_id(erforderlich) |
Konten |
| SetAccountFeatures | account_id(erforderlich), features(erforderlich) |
Sonstiges |
| GetServerInfo | keine |
Partner |
| AddPartner | partner_info(erforderlich), create_default_account(erforderlich) |
Partner |
| EnumerateChildPartners | partner_id(erforderlich), fields(erforderlich), partner_filter(erforderlich), range(optional) |
Partner |
| EnumeratePartners | parent_partner_id(erforderlich), fetch_recursively(erforderlich), fields(erforderlich) |
Partner |
| GetPartnerInfo | name(erforderlich) |
Partner |
| GetPartnerInfoById | partner_id(erforderlich) |
Partner |
| GetPartnerTree | partner_id(erforderlich), fields(erforderlich), filter(erforderlich), children_limit(erforderlich), partner_filter(erforderlich) |
Partner |
| GetRootPartnerName | keine |
Partner |
| ModifyPartner | partner_info(erforderlich), force_remove_custom_column_values_in_old_scope(erforderlich) |
Partner |
| RemovePartner | partner_id(erforderlich) |
Benutzer |
| AddUser | user_info(erforderlich) |
Benutzer |
| EnumerateUserRoles | keine |
Benutzer |
| EnumerateUsers | partner_ids(erforderlich) |
Benutzer |
| GetUserInfo | partner_id(erforderlich), name_or_email(erforderlich), password(erforderlich) |
Benutzer |
| GetUserInfoById | user_id(erforderlich) |
Benutzer |
| ModifyUser | user_info(erforderlich) |
Benutzer |
| 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
Erste Schritte: https://developer.n-able.com/n-able-cove/docs/getting-started
Autorisierung: https://developer.n-able.com/n-able-cove/docs/authorization
Aufbau eines Aufrufs: https://developer.n-able.com/n-able-cove/docs/construct-a-json-rpc-api-call
Vollständiges Methoden-/Struktur-/Enum-Schema (JSON): https://documentation.n-able.com/covedataprotection/Schema_23.3.json
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/listgegenapp.mspbots.ai, Integrations-ID2026570354981494786) 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" inSchema_23.3.jsonfü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_infowar 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_*_infonach Name+Passwort vs.get_*_info_by_idnach 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 (rangeaufEnumerateChildPartners) ist eine undurchsichtige Anbieterstruktur, die unverändert durchgereicht wird, undchildren_limitaufGetPartnerTreewird 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 dierange-/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.Settingshat kein Partner-/Benutzername-/Passwort-Feld;get_client_from_contextgibtNonezurü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 mitreadOnlyHint=True, idempotentHint=Truemarkiert;add_*-Tools sindreadOnlyHint=False, idempotentHint=False(zweimaliges Erstellen ist keine No-op);modify_*-/set_*-/remove_*-Tools sindreadOnlyHint=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.
This server cannot be installed
Maintenance
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
MCP server for Codat — companies, connections, invoices, bills and financial statements.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP Server for agents to onboard, pay, and provision services autonomously with InFlow
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
111
Related MCP Servers
- AlicenseBqualityBmaintenanceMCP server to help manage a WHMCS installation.624220MIT
- AlicenseNot gradedqualityAmaintenanceMCP 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
- FlicenseNot gradedqualityBmaintenanceMCP server that exposes Acronis Cyber Protect Cloud APIs as 14 read-only tools for managing alerts, tasks, agents, resources, policies, and tenants.-
- FlicenseNot gradedqualityCmaintenanceMCP 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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