Skip to main content
Glama
MSPbotsAI

covedataprotection-mcp

by MSPbotsAI

covedataprotection-mcp

MCP-сервер для Cove Data Protection (платформа резервного копирования/BDR от N-able, ранее N-able Backup / Backup Manager). Предоставляет API JSON-RPC Management Service Backup Manager в виде MCP-инструментов.

Обзор

  • HTTP-сервис без состояния. Учётные данные никогда не сохраняются — каждый запрос передаёт свои собственные учётные данные через заголовки, которые используются только в течение жизни этого одного запроса.

  • Поддерживает конкурентные запросы; изоляция учётных данных для каждого запроса выполняется через Python contextvars, а не через глобальный/общий экземпляр клиента.

  • Точки входа: POST /mcp (протокол MCP) и GET /health (проверка работоспособности).

  • Порт по умолчанию: 8080 (настраивается через MCP_HTTP_PORT).

Related MCP server: spanning-mcp

Область применения

26 инструментов, урезанных из исходной сборки полной схемы на 247 инструментов (2026-08-04). Собственная интеграция Cove Data Protection от MSPbots (подтверждённая вживую через /web/int/sys/integration/api/list на производственной платформе) настроена ровно на 6 API, которые сопоставлены со следующими нижележащими методами JSON-RPC:

API, настроенное MSPbots

Метод 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 — см. Known Gaps

Остальные 5 методов, подтверждённых как реальные, были оставлены как есть, плюс базовые CRUD-операции той же категории (Add/Get/Modify/Remove) для каждого из трёх типов ресурсов, которых они касаются, — accounts (9 инструментов), partners (9 инструментов), users (7 инструментов) — а также GetServerInfo (1 инструмент, самопроверка связности, использовавшийся для исходной live-проверки ниже). Все остальные категории из исходной сборки на 247 инструментов (notifications, storage_nodes, contacts, storage, view_delivery, labels, jobs, custom_columns, branding, products, eula, locations, countries, audit, email, regions, features, permissions, templates — 19 категорий, ~221 инструмент) были удалены полностью как неиспользуемые MSPbots и выходящие за рамки назначения этого сервера.

Аутентификация

В Cove нет статического долгоживущего API-ключа. Вместо этого каждая сессия начинается с вызова Login (partner + username + password), который возвращает недолговечный токен visa (действителен ~15 минут), и этот токен должен сопровождать каждый последующий вызов.

Этот сервер не кэширует visa между запросами — кэширование означало бы сохранение состояния сессии, что противоречит требованию «никакого хранения учётных данных». Вместо этого api_client.CoveClient.call() выполняет новый Login при каждом вызове инструмента и отбрасывает полученную visa после завершения, ценой одного дополнительного HTTP-запроса на каждый вызов ради полной независимости от состояния.

Описание параметров авторизации в заголовках

Заголовок

Тип

Обязателен

По умолчанию

Допустимые значения

Описание поля

Пример

X-CoveDataProtection-Partner

string

да

нет

нет

поле partner из Login (тенант/имя партнёра, к которому относится вход)

Acme MSP (admin@example.com)

X-CoveDataProtection-Username

string

да

нет

нет

поле username из Login

mspbots

X-CoveDataProtection-Password

string

да

нет

нет

поле password из Login

••••••••

Отсутствие любого из трёх заголовков возвращает 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

JSON-RPC endpoint Cove Management Service

Конечная точка 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); сложные параметры с типами struct/enum принимаются как dict/str и передаются в API вендора как есть — о том, что это означает на практике, см. Known Gaps.

Категория

Инструмент

Метод JSON-RPC

Параметры

accounts

covedataprotection_add_account

AddAccount

account_info(обязательный), home_node_info(обязательный)

accounts

covedataprotection_enumerate_account_statistics

EnumerateAccountStatistics

query(обязательный)

accounts

covedataprotection_enumerate_accounts

EnumerateAccounts

partner_id(обязательный)

accounts

covedataprotection_get_account_features

GetAccountFeatures

account_id(обязательный)

accounts

covedataprotection_get_account_info

GetAccountInfo

name(обязательный), password(обязательный)

accounts

covedataprotection_get_account_info_by_id

GetAccountInfoById

account_id(обязательный)

accounts

covedataprotection_modify_account

ModifyAccount

account_info(обязательный), force_remove_custom_column_values_in_old_scope(обязательный)

accounts

covedataprotection_remove_account

RemoveAccount

account_id(обязательный)

accounts

covedataprotection_set_account_features

SetAccountFeatures

account_id(обязательный), features(обязательный)

misc

covedataprotection_get_server_info

GetServerInfo

нет

partners

covedataprotection_add_partner

AddPartner

partner_info(обязательный), create_default_account(обязательный)

partners

covedataprotection_enumerate_child_partners

EnumerateChildPartners

partner_id(обязательный), fields(обязательный), partner_filter(обязательный), range(необязательный)

partners

covedataprotection_enumerate_partners

EnumeratePartners

parent_partner_id(обязательный), fetch_recursively(обязательный), fields(обязательный)

partners

covedataprotection_get_partner_info

GetPartnerInfo

name(обязательный)

partners

covedataprotection_get_partner_info_by_id

GetPartnerInfoById

partner_id(обязательный)

partners

covedataprotection_get_partner_tree

GetPartnerTree

partner_id(обязательный), fields(обязательный), filter(обязательный), children_limit(обязательный), partner_filter(обязательный)

partners

covedataprotection_get_root_partner_name

GetRootPartnerName

нет

partners

covedataprotection_modify_partner

ModifyPartner

partner_info(обязательный), force_remove_custom_column_values_in_old_scope(обязательный)

partners

covedataprotection_remove_partner

RemovePartner

partner_id(обязательный)

users

covedataprotection_add_user

AddUser

user_info(обязательный)

users

covedataprotection_enumerate_user_roles

EnumerateUserRoles

нет

users

covedataprotection_enumerate_users

EnumerateUsers

partner_ids(обязательный)

users

covedataprotection_get_user_info

GetUserInfo

partner_id(обязательный), name_or_email(обязательный), password(обязательный)

users

covedataprotection_get_user_info_by_id

GetUserInfoById

user_id(обязательный)

users

covedataprotection_modify_user

ModifyUser

user_info(обязательный)

users

covedataprotection_remove_user

RemoveUser

user_id(обязательный)

Тестовый пример

# 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 сообщает вызывающей стороне, может ли повторная попытка того же вызова завершиться успехом (true только для rate_limited и upstream_error). Инструменты никогда не выбрасывают исключения для бизнес-ошибок/ошибок вендора — этот конверт возвращается как обычная строка результата инструмента.

Проверено вживую (2026-07-29): covedataprotection_get_server_info (ноль параметров) был вызван end-to-end через этот запущенный сервер с реальными partner/username/password и вернул фактическую версию сервера Cove — подтверждая, что цепочка Login → visa → вызов метода работает с живым API, а не только структурно.

Справочник API

Известные пробелы

  • Сокращено с 247 до 26 инструментов 2026-08-04. Первоначальная сборка покрывала каждый метод в схеме Management Service. Согласно более позднему решению о границах охвата, набор был сокращён до того, что реально вызывает собственная производственная конфигурация интеграции MSPbots (проверено вживую через /web/int/sys/integration/api/list на app.mspbots.ai, id интеграции 2026570354981494786) плюс базовые CRUD той же категории — см. раздел Scope выше для точного соответствия API→метод и полного списка удалённых категорий. Удалено ~221 инструмент (notifications, storage_nodes, contacts, storage, view_delivery, labels, jobs, custom_columns, branding, products, eula, locations, countries, audit, email, regions, features, permissions, templates); в этой сборке их нет вообще; если в будущем понадобится один из них, исходная схема (Schema_23.3.json, ссылка ниже) по-прежнему документирует его точную сигнатуру метода, и его можно добавить тем же способом, которым были сгенерированы сохранённые инструменты.

  • Это покрывает только Management Service. Руководство по началу работы с Cove описывает вторую, отдельную Reporting Service ({host}/repserv_json, работает на каждом узле хранения), которая предоставляет статистику сеансов резервного копирования/восстановления. Собственная конфигурация MSPbots вызывает отчёт «Query Sessions» в этой Reporting Service — она не является частью схемы Management Service, из которой генерируется этот MCP, и публичной схемы для Reporting Service найдено не было. Это единственный настроенный в MSPbots endpoint, который этот MCP не покрывает; его можно добавить, если станет доступен список методов/схема Reporting Service.

  • Сложные параметры структур/перечислений нетипизированы (dict/str), а не полностью смоделированы. Схема определяет 106 структур и 78 перечислений; полностью воспроизвести каждую из них как типизированный параметр Python было вне рамок для механически сгенерированного сервера. Вызывающим нужно формировать эти dict-аргументы в соответствии со схемой вендора (см. раздел Structs в Schema_23.3.json для точных имён полей) — описание каждого такого параметра называет структуру, которой он соответствует, и указывает на этот файл схемы.

  • Нет кэширования visa — см. раздел Authentication выше. Каждый вызов инструмента выполняет собственный Login, что просто и полностью без сохранения состояния, но означает 2 HTTP-запроса к вендору на каждый вызов инструмента вместо 1.

  • Все 26 инструментов были сгенерированы кодом напрямую из собственного файла схемы вендора, а не написаны вручную — имена/типы параметров настолько точны, насколько точна эта схема. covedataprotection_get_server_info был единственным инструментом, проверенным вживую end-to-end; остальные структурно корректны (схема проверена, tools/list MCP-протокола подтверждён), но не проходили индивидуальное смоук-тестирование на реальных данных.

Примечания о соответствии вендорскому MCP SOP

  • Количество инструментов (26) превышает рекомендацию SOP «должно быть ≤20». Уже сокращено с 247 до 26 (см. выше); оставшиеся 26 сопоставляются 1:1 с отдельными методами JSON-RPC в 3 доменах ресурсов (accounts/partners/users), которые нельзя объединить без потери различий в обязательных параметрах (например, get_*_info по name+password и get_*_info_by_id по числовому ID — это разные ключи поиска, а не один инструмент с необязательным параметром).

  • Ни на одном инструменте нет скалярного параметра limit / page_size. Ни один из 26 методов не предоставляет полноценный числовой параметр размера страницы — единственное поле, похожее на пагинацию (range в EnumerateChildPartners), является непрозрачной структурой вендора и передаётся как есть, а children_limit в GetPartnerTree точно так же передаётся вендору без интерпретации. Этому серверу нечего ограничивать в соответствии с рекомендацией SOP «по умолчанию 50 / жёсткий предел 200»; если окажется, что структуры range/limit в схеме вендора имеют собственный документированный максимум на страницу, то здесь следует применять именно его, а не общий запасной потолок из SOP.

  • Нет запасного варианта с переменными окружения для учётных данных. В config.Settings нет поля partner/username/password; get_client_from_context возвращает None (→ конверт not_configured) всякий раз, когда контекстная переменная запроса не установлена. Не существует пути кода, который откатывался бы к переменной окружения.

  • Аннотации инструментов: каждый инструмент чтения (get_*, enumerate_*) помечен readOnlyHint=True, idempotentHint=True; инструменты add_* имеют readOnlyHint=False, idempotentHint=False (создание дважды — не no-op); инструменты 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