covedataprotection-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@covedataprotection-mcpenumerate my backup accounts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
covedataprotection-mcp
MCP server for Cove Data Protection (N-able's backup/BDR platform, formerly N-able Backup / Backup Manager). Exposes the Backup Manager JSON-RPC Management Service API as MCP tools.
Overview
Stateless HTTP service. No credentials are ever persisted — each request supplies its own credentials via headers, used only for the lifetime of that single request.
Supports concurrent requests; per-request credential isolation is done via Python
contextvars, not a global/shared client instance.Entry points:
POST /mcp(MCP protocol) andGET /health(health check).Default port:
8080(configurable viaMCP_HTTP_PORT).
Related MCP server: spanning-mcp
Scope
26 tools, trimmed down from an original 247-tool full-schema build
(2026-08-04). MSPbots' own Cove Data Protection integration (confirmed live
via /web/int/sys/integration/api/list against the production platform) is
configured with exactly 6 APIs, mapped to these underlying JSON-RPC methods:
MSPbots-configured API | JSON-RPC method | Covered here? |
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, not Management Service — see Known Gaps |
The other 5 confirmed-real methods above were kept as-is, plus same-category
core CRUD (Add/Get/Modify/Remove) for each of the three resource
types they touch — accounts (9 tools), partners (9 tools), users (7
tools) — plus GetServerInfo (1 tool, connectivity self-test, used for the
original live-verification below). Every other category from the original
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 categories, ~221 tools) was removed entirely
as unused by MSPbots and out of scope for this server's purpose.
Authentication
Cove has no static long-lived API key. Instead, every session starts with a
Login call (partner + username + password) that returns a
short-lived visa token (valid ~15 minutes), which must accompany every
subsequent call.
This server does not cache a visa across requests — caching one would
mean persisting session state, which conflicts with the "no credential
persistence" requirement. Instead, api_client.CoveClient.call() performs a
fresh Login on every tool invocation and discards the resulting visa
afterward, trading one extra HTTP round trip per call for full statelessness.
HEADER 授权参数说明
Header | 类型 | 是否必填 | 默认值 | 枚举值 | 字段描述 | Example |
| string | 是 | 无 | 无 | Login 的 |
|
| string | 是 | 无 | 无 | Login 的 |
|
| string | 是 | 无 | 无 | Login 的 |
|
Missing any of the three headers returns 401:
{
"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": []
}Environment Variables
Variable | 类型 | 是否必填 | 默认值 | 说明 |
| int | 否 |
| HTTP 监听端口 |
| string | 否 |
| HTTP 监听地址 |
| string | 否 |
| Cove Management Service JSON-RPC 端点 |
MCP Endpoint
POST /mcp— MCP protocol (streamable HTTP transport)GET /health— health check, returns{"status": "ok", "service": "covedataprotection-mcp", "transport": "http"}
Tool List
Tool names follow covedataprotection_<snake_case_method_name> — e.g. the
JSON-RPC method EnumerateAccountStatistics becomes
covedataprotection_enumerate_account_statistics. Parameter names mirror
the JSON-RPC method's own parameter names (camelCase → snake_case); complex
struct/enum-typed parameters are accepted as a dict/str and passed
through to the vendor API as-is — see Known Gaps for what that means in
practice.
Category | Tool | JSON-RPC Method | Params |
accounts |
| AddAccount | account_info(required), home_node_info(required) |
accounts |
| EnumerateAccountStatistics | query(required) |
accounts |
| EnumerateAccounts | partner_id(required) |
accounts |
| GetAccountFeatures | account_id(required) |
accounts |
| GetAccountInfo | name(required), password(required) |
accounts |
| GetAccountInfoById | account_id(required) |
accounts |
| ModifyAccount | account_info(required), force_remove_custom_column_values_in_old_scope(required) |
accounts |
| RemoveAccount | account_id(required) |
accounts |
| SetAccountFeatures | account_id(required), features(required) |
misc |
| GetServerInfo | none |
partners |
| AddPartner | partner_info(required), create_default_account(required) |
partners |
| EnumerateChildPartners | partner_id(required), fields(required), partner_filter(required), range(optional) |
partners |
| EnumeratePartners | parent_partner_id(required), fetch_recursively(required), fields(required) |
partners |
| GetPartnerInfo | name(required) |
partners |
| GetPartnerInfoById | partner_id(required) |
partners |
| GetPartnerTree | partner_id(required), fields(required), filter(required), children_limit(required), partner_filter(required) |
partners |
| GetRootPartnerName | none |
partners |
| ModifyPartner | partner_info(required), force_remove_custom_column_values_in_old_scope(required) |
partners |
| RemovePartner | partner_id(required) |
users |
| AddUser | user_info(required) |
users |
| EnumerateUserRoles | none |
users |
| EnumerateUsers | partner_ids(required) |
users |
| GetUserInfo | partner_id(required), name_or_email(required), password(required) |
users |
| GetUserInfoById | user_id(required) |
users |
| ModifyUser | user_info(required) |
users |
| RemoveUser | user_id(required) |
测试示例
# 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": {}
}
}'Expected: 200 with the server version on valid credentials; on invalid
credentials, the Login call itself fails and every tool surfaces
Error: Cove Data Protection API error ... with the vendor's JSON-RPC error
message.
Live-verified (2026-07-29): covedataprotection_get_server_info (zero
parameters) was called end-to-end through this running server with a real
partner/username/password and returned the actual Cove server version —
confirming the Login → visa → method-call pipeline works against the live
API, not just structurally.
API Reference
Getting Started: https://developer.n-able.com/n-able-cove/docs/getting-started
Authorization: https://developer.n-able.com/n-able-cove/docs/authorization
Constructing a call: https://developer.n-able.com/n-able-cove/docs/construct-a-json-rpc-api-call
Full method/struct/enum schema (JSON): https://documentation.n-able.com/covedataprotection/Schema_23.3.json
Known Gaps
Trimmed from 247 to 26 tools on 2026-08-04. The original build covered every method in the Management Service schema. Per a later scope decision, this was cut down to what MSPbots' own production integration config actually calls (verified live via
/web/int/sys/integration/api/listagainstapp.mspbots.ai, integration id2026570354981494786) plus same-category core CRUD — see the Scope section above for the exact API→method mapping and the full list of removed categories. The removed ~221 tools (notifications,storage_nodes,contacts,storage,view_delivery,labels,jobs,custom_columns,branding,products,eula,locations,countries,audit,email,regions,features,permissions,templates) are not in this build at all; if a future need requires one of them, the original schema (Schema_23.3.json, linked below) still documents its exact method signature and it can be re-added the same way the kept tools were generated.This covers the Management Service only. Cove's Getting Started guide describes a second, separate Reporting Service (
{host}/repserv_json, runs per storage node) that provides backup/restore session statistics. MSPbots' own configuration calls a "Query Sessions" report against this Reporting Service — it is not part of the Management Service schema this MCP is generated from, and no public schema for the Reporting Service was found. This is the one MSPbots-configured endpoint this MCP does not cover; it can be added if the Reporting Service's method list/schema becomes available.Complex struct/enum parameters are untyped (
dict/str) rather than fully modeled. The schema defines 106 structs and 78 enums; fully reproducing each one as a typed Python parameter was out of scope for a mechanically-generated server. Callers need to shape these dict arguments to match the vendor's schema (see the Structs section ofSchema_23.3.jsonfor exact field names) — the tool docstrings name the original JSON-RPC parameter name and type to help with this.No visa caching — see the Authentication section above. Every tool call performs its own Login, which is simple and fully stateless but means 2 HTTP requests to the vendor per tool call instead of 1.
All 26 tools were code-generated directly from the vendor's own schema file, not hand-written — parameter names/types are only as accurate as that schema.
covedataprotection_get_server_infowas the one tool live-verified end-to-end; the rest are structurally correct (schema validated, MCP-protocol tools/list confirmed) but not individually smoke-tested against real data.
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 Servers
- AlicenseBqualityBmaintenanceMCP server to help manage a WHMCS installation.623919MIT
- 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
- AlicenseNot gradedqualityAmaintenanceMCP server for ConnectWise PSA (Manage) enabling ticket management, time entry, and read-only lookups of companies, contacts, and configurations with role-based access control and bring-your-own-API-keys support.1435MIT
- FlicenseNot gradedqualityCmaintenanceMCP server that exposes Acronis Cyber Protect Cloud APIs as 14 read-only tools for managing alerts, tasks, agents, resources, policies, and tenants.
Related MCP Connectors
MCP Server for agents to onboard, pay, and provision services autonomously with InFlow
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
MCP server exposing the Backtest360 engine API as tools for AI agents.
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