Skip to main content
Glama
MSPbotsAI

covedataprotection-mcp

by MSPbotsAI

covedataprotection-mcp

面向 Cove Data Protection(N-able 的备份/BDR 平台,前身为 N-able Backup / Backup Manager)的 MCP 服务器。将 Backup Manager JSON-RPC Management Service API 以 MCP 工具的形式暴露出来。

概述

  • 无状态 HTTP 服务。任何凭据都不会被持久化——每个请求通过请求头自行提供凭据,且这些凭据仅在该单个请求的生命周期内使用。

  • 支持并发请求;每个请求的凭据隔离通过 Python contextvars 实现,而非使用全局/共享的客户端实例。

  • 入口点:POST /mcp(MCP 协议)和 GET /health(健康检查)。

  • 默认端口:8080(可通过 MCP_HTTP_PORT 配置)。

Related MCP server: spanning-mcp

范围

26 个工具,从最初包含 247 个工具的完整 schema 构建(2026-08-04)中精简而来。MSPbots 自己的 Cove Data Protection 集成(已通过在生产平台上调用 /web/int/sys/integration/api/list 确认为在线)恰好配置了 6 个 API,映射到以下底层 JSON-RPC 方法:

MSPbots 配置的 API

JSON-RPC 方法

此处是否覆盖?

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,而非 Management Service——请参阅已知差距

上表中其他 5 个已确认为真实存在的方法按原样保留,此外还为它们涉及的三种资源类型各补充了同类核心 CRUDAdd/Get/Modify/Remove)——accounts(9 个工具)、partners(9 个工具)、users(7 个工具)——以及 GetServerInfo(1 个工具,连接自检,用于下文最初的在线验证)。原始 247 个工具构建中的其他所有类别(notificationsstorage_nodescontactsstorageview_deliverylabelsjobscustom_columnsbrandingproductseulalocationscountriesauditemailregionsfeaturespermissionstemplates——共 19 个类别,约 221 个工具)因 MSPbots 未使用且超出本服务器的用途范围而被完全移除。

身份验证

Cove 没有静态的长期有效 API 密钥。相反,每个会话都以一次 Login 调用(partner + username + password)开始,该调用返回一个短期有效的 visa 令牌(有效期约 15 分钟),后续每次调用都必须携带该令牌。

本服务器不会在请求之间缓存 visa——缓存 visa 意味着持久化会话状态,这与“不持久化凭据”的要求相冲突。相反,api_client.CoveClient.call()每次工具调用时都会执行一次全新的 Login,并在调用结束后丢弃生成的 visa,以每次调用多一次 HTTP 往返为代价换取完全的无状态性。

HEADER 授权参数说明

请求头

类型

是否必填

默认值

枚举值

字段描述

示例

X-CoveDataProtection-Partner

string

Login 的 partner 字段(登录所属的租户/合作伙伴名)

Acme MSP (admin@example.com)

X-CoveDataProtection-Username

string

Login 的 username 字段

mspbots

X-CoveDataProtection-Password

string

Login 的 password 字段

••••••••

缺少这三个请求头中的任意一个都会返回 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": []
}

环境变量

变量

类型

是否必填

默认值

说明

MCP_HTTP_PORT

int

8080

HTTP 监听端口

MCP_HTTP_HOST

string

0.0.0.0

HTTP 监听地址

COVEDATAPROTECTION_BASE_URL

string

https://api.backup.management/jsonapi

Cove Management Service JSON-RPC 端点

MCP 端点

  • POST /mcp — MCP 协议(流式 HTTP 传输)

  • GET /health — 健康检查,精确返回 {"status": "ok"}(纯本地存活探针;不会调用 Cove API)

工具列表

工具名称遵循 covedataprotection_<snake_case_method_name> 格式——例如,JSON-RPC 方法 EnumerateAccountStatistics 对应工具 covedataprotection_enumerate_account_statistics。参数名称与 JSON-RPC 方法自身的参数名称保持一致(camelCase → snake_case);结构体/枚举类型的复杂参数以 dict/str 形式接受,并原样透传给供应商 API——这在实践中意味着什么,请参阅已知差距

类别

工具

JSON-RPC 方法

参数

accounts

covedataprotection_add_account

AddAccount

account_info(required), home_node_info(required)

accounts

covedataprotection_enumerate_account_statistics

EnumerateAccountStatistics

query(required)

accounts

covedataprotection_enumerate_accounts

EnumerateAccounts

partner_id(required)

accounts

covedataprotection_get_account_features

GetAccountFeatures

account_id(required)

accounts

covedataprotection_get_account_info

GetAccountInfo

name(required), password(required)

accounts

covedataprotection_get_account_info_by_id

GetAccountInfoById

account_id(required)

accounts

covedataprotection_modify_account

ModifyAccount

account_info(required), force_remove_custom_column_values_in_old_scope(required)

accounts

covedataprotection_remove_account

RemoveAccount

account_id(required)

accounts

covedataprotection_set_account_features

SetAccountFeatures

account_id(required), features(required)

misc

covedataprotection_get_server_info

GetServerInfo

none

partners

covedataprotection_add_partner

AddPartner

partner_info(required), create_default_account(required)

partners

covedataprotection_enumerate_child_partners

EnumerateChildPartners

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

partners

covedataprotection_enumerate_partners

EnumeratePartners

parent_partner_id(required), fetch_recursively(required), fields(required)

partners

covedataprotection_get_partner_info

GetPartnerInfo

name(required)

partners

covedataprotection_get_partner_info_by_id

GetPartnerInfoById

partner_id(required)

partners

covedataprotection_get_partner_tree

GetPartnerTree

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

partners

covedataprotection_get_root_partner_name

GetRootPartnerName

none

partners

covedataprotection_modify_partner

ModifyPartner

partner_info(required), force_remove_custom_column_values_in_old_scope(required)

partners

covedataprotection_remove_partner

RemovePartner

partner_id(required)

users

covedataprotection_add_user

AddUser

user_info(required)

users

covedataprotection_enumerate_user_roles

EnumerateUserRoles

none

users

covedataprotection_enumerate_users

EnumerateUsers

partner_ids(required)

users

covedataprotection_get_user_info

GetUserInfo

partner_id(required), name_or_email(required), password(required)

users

covedataprotection_get_user_info_by_id

GetUserInfoById

user_id(required)

users

covedataprotection_modify_user

ModifyUser

user_info(required)

users

covedataprotection_remove_user

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": {}
    }
  }'

预期结果:凭据有效时返回 200 及服务器版本;凭据无效时,Login 调用本身会失败,每个工具都会返回一个结构化的 JSON 错误封装,例如:

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

code 是固定值 not_configured / unauthorized / not_found / invalid_argument / rate_limited / upstream_error 之一;retryable 告知调用方重试同一调用是否可能成功(仅对 rate_limitedupstream_error 为 true)。工具绝不会因业务/供应商错误而抛出异常——该封装会作为正常的工具结果字符串返回。

已在线验证(2026-07-29):通过此运行中的服务器,使用真实的 partner/username/password 对 covedataprotection_get_server_info(零参数)进行了端到端调用,并返回了实际的 Cove 服务器版本——确认 Login → visa → 方法调用管道能够针对线上 API 正常工作,而不仅仅是结构上正确。

API 参考

已知差距

  • 2026-08-04 从 247 个工具缩减为 26 个。 最初的构建覆盖了 Management Service 模式中的每个方法。根据后续的范围决策,缩减为 MSPbots 自己的生产集成配置实际调用的内容(已通过 app.mspbots.ai 上的 /web/int/sys/integration/api/list 在线验证,集成 ID 为 2026570354981494786),外加同类别的核心 CRUD——有关确切的 API→方法映射和已移除类别的完整列表,请参阅上面的 Scope 部分。被移除的 ~221 个工具(notificationsstorage_nodescontactsstorageview_deliverylabelsjobscustom_columnsbrandingproductseulalocationscountriesauditemailregionsfeaturespermissionstemplates)完全不在此构建中;如果未来需要其中任何一个,原始模式(Schema_23.3.json,见下方链接)仍记录有其确切的方法签名,并且可以按照保留工具相同的生成方式重新添加。

  • 这仅涵盖 Management Service。 Cove 的 Getting Started 指南描述了第二个独立的 Reporting Service{host}/repserv_json,在每个存储节点上运行),它提供备份/恢复会话统计信息。MSPbots 自己的配置会针对此 Reporting Service 调用一个 “Query Sessions” 报告——它属于此 MCP 所依据的 Management Service 模式,并且未找到 Reporting Service 的公开模式。这是此 MCP 未覆盖的唯一一个 MSPbots 配置的端点;如果 Reporting Service 的方法列表/模式可用,则可以添加它。

  • 复杂的结构体/枚举参数是未类型化的(dict/str),而非完整建模。 该模式定义了 106 个结构体和 78 个枚举;对于机械生成的服务器而言,将每一个都完整重现为类型化的 Python 参数超出了范围。调用方需要按照供应商模式来构造这些 dict 参数(有关确切的字段名,请参阅 Schema_23.3.json 的 Structs 部分)——每个此类参数的描述都会指明其映射到的结构体,并指向该模式文件。

  • 无 visa 缓存——请参阅上面的 Authentication 部分。每次工具调用都会执行自己的 Login,这简单且完全无状态,但意味着每次工具调用需要向供应商发送 2 次 HTTP 请求,而不是 1 次。

  • 全部 26 个工具都是直接从供应商自己的模式文件代码生成的,而非手写——参数名称/类型的准确度仅与该模式相当。covedataprotection_get_server_info 是唯一一个经过端到端在线验证的工具;其余工具在结构上是正确的(模式已验证,MCP 协议的 tools/list 已确认),但未针对真实数据逐一进行冒烟测试。

供应商 MCP SOP 合规性说明

  • 工具数量(26)超过了 SOP 的“应 ≤20”指南。 已从 247 缩减为 26(见上文);剩余的 26 个工具与 3 个资源域(accounts/partners/users)中的不同 JSON-RPC 方法一一对应,这些方法无法合并,否则会丢失必需参数的区别(例如,按 name+password 的 get_*_info 与按数字 ID 的 get_*_info_by_id 是不同的查找键,而不是带有可选参数的同一个工具)。

  • 任何工具上都不存在 limit / page_size 标量参数。 26 个方法中没有一个暴露正式的数值型分页大小参数——唯一一个具有分页形态的字段(EnumerateChildPartners 上的 range)是一个不透明的供应商结构体,按原样透传;GetPartnerTree 上的 children_limit 同样被不加解释地直接传给供应商。此服务器没有任何东西可以依据 SOP 的默认 50 / 硬上限 200 指南进行限制;如果供应商模式的 range/limit 结构体本身有文档化的每页最大值,则应在此处强制执行该值,而不是采用 SOP 的通用回退上限。

  • 没有凭据环境变量回退。 config.Settings 没有 partner/username/password 字段;每当每请求的 contextvar 未设置时,get_client_from_context 返回 None(→ not_configured 信封)。不存在回退到环境变量的代码路径。

  • 工具注解:每个读取工具(get_*enumerate_*)都被标记为 readOnlyHint=True, idempotentHint=Trueadd_* 工具为 readOnlyHint=False, idempotentHint=False(创建两次并非无操作);modify_*/set_*/remove_* 工具为 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