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: connectwise-manage-mcp
Scope
247 tools, one per JSON-RPC method in the official Management Service
schema (Schema_23.3.json, 251 methods total; 4 auth-only methods — Login,
Authenticate, AuthenticateWithContext, GetAuthContextFromVisa — are
handled internally by this server instead of exposed as tools). Per explicit
user decision, this covers the full public API including write
operations (Add/Remove/Modify/Set/Update, ~110 methods), not just the
71 Get* + 70 Enumerate* read methods. MSPbots itself only calls 6
report-style endpoints — see Known Gaps for the one MSPbots endpoint
this MCP does not cover.
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 | 参数 |
partners |
| AddPartner | partner_info(必填), create_default_account(必填) |
partners |
| AddPartnerEx | partner_info(必填), create_default_account(必填) |
partners |
| ChangePartnerState | partner_id(必填), action(必填), reason(必填) |
partners |
| EnumerateAccountPartnerIdTree | account_name(必填), account_password(必填) |
partners |
| EnumerateAdvancedPartnerPropertiesInfos | parent_partner_id(必填), fetch_recursively(必填) |
partners |
| EnumerateAdvancedPartnerPropertiesInfosByPartnerIds | partner_ids(必填) |
partners |
| EnumerateAncestorPartners | partner_id(必填) |
partners |
| EnumerateChildPartners | partner_id(必填), fields(必填), partner_filter(必填), range(可选) |
partners |
| EnumerateExternalPartnerProperties | partner_ids(必填) |
partners |
| EnumeratePartnerProperties | 无 |
partners |
| EnumeratePartnerStateTransitions | 无 |
partners |
| EnumeratePartnerStatesByPeriod | start_time(必填), end_time(必填) |
partners |
| EnumeratePartnerUrls | partner_id(必填) |
partners |
| EnumeratePartnerUsersLoginTimes | partner_ids(必填) |
partners |
| EnumeratePartners | parent_partner_id(必填), fetch_recursively(必填), fields(必填) |
partners |
| EnumeratePartnersAtTime | parent_partner_id(必填), fetch_recursively(必填), time(必填) |
partners |
| EnumeratePermittedPartners | entity(必填), action(必填), partner_ids(必填) |
partners |
| EnumerateRemovedPartners | parent_partner_id(必填), start_time(必填), end_time(必填) |
partners |
| EnumerateRespectRemovedAncestorPartnersAtTime | partner_id(必填), time(必填) |
partners |
| EnumerateUniquePartnerStatesByPeriod | start_time(必填), end_time(必填) |
partners |
| GetAdvancedPartnerProperties | partner_id(必填) |
partners |
| GetAutoDeploymentPartnerState | partner_id(必填) |
partners |
| GetPartnerInfo | name(必填) |
partners |
| GetPartnerInfoAtTime | partner_id(必填), time(必填) |
partners |
| GetPartnerInfoById | partner_id(必填) |
partners |
| GetPartnerInfoByUid | partner_uid(必填) |
partners |
| GetPartnerInfoHistory | partner_id(必填), fields(必填) |
partners |
| GetPartnerPriceCurrency | partner_id(必填) |
partners |
| GetPartnerProductionDates | partner_id(必填) |
partners |
| GetPartnerState | partner_id(必填) |
partners |
| GetPartnerTree | partner_id(必填), fields(必填), filter(必填), children_limit(必填), partner_filter(必填) |
partners |
| GetPartnerUrl | partner_id(必填), url_type(必填) |
partners |
| GetPartnerUsersLoginTimes | partner_id(必填) |
partners |
| GetPartnersRuleAppliedTo | rule_id(必填) |
partners |
| GetPartnersRuleInactiveFor | rule_id(必填) |
partners |
| GetRootPartnerName | 无 |
partners |
| IsAutoDeploymentAllowedForPartner | partner_id(必填) |
partners |
| IsDirectDebtorPartner | partner_id(必填) |
partners |
| ModifyAutoDeploymentPartnerState | partner_id(必填), auto_deployment_state(必填) |
partners |
| ModifyPartner | partner_info(必填), force_remove_custom_column_values_in_old_scope(必填) |
partners |
| RegeneratePartnerUid | partner_id(必填) |
partners |
| RegisterExternalPartnerProperty | partner_property(必填) |
partners |
| RemovePartner | partner_id(必填) |
partners |
| SetAdvancedPartnerProperties | partner_id(必填), advanced_partner_properties_info(必填) |
partners |
| SetPartnerPriceCurrency | partner_id(必填), currency(必填) |
partners |
| SetPartnerUrl | partner_id(必填), url_type(必填), url(必填) |
accounts |
| AddAccount | account_info(必填), home_node_info(必填) |
accounts |
| AddAccountNode | account_node_info(必填) |
accounts |
| AddAccountProfile | account_profile_info(必填) |
accounts |
| EnumerateAccountNodesByAccountToken | token(必填) |
accounts |
| EnumerateAccountProfiles | partner_id(必填) |
accounts |
| EnumerateAccountStatistics | query(必填) |
accounts |
| EnumerateAccounts | partner_id(必填) |
accounts |
| EnumerateEverHostedAccounts | storage_node_id(必填) |
accounts |
| EnumerateRemovedAccountsByIds | account_ids(必填) |
accounts |
| GetAccountFeatures | account_id(必填) |
accounts |
| GetAccountId | account_name(必填), account_password(必填) |
accounts |
| GetAccountInfo | name(必填), password(必填) |
accounts |
| GetAccountInfoById | account_id(必填) |
accounts |
| GetAccountInfoByIdWithRemoved | account_id(必填) |
accounts |
| GetAccountInfoByToken | token(必填) |
accounts |
| GetAccountNodeInfo | account_node_id(必填) |
accounts |
| GetAccountNodeInfoByGuid | node_guid(必填) |
accounts |
| GetAccountProfileInfo | account_profile_id(必填) |
accounts |
| ModifyAccount | account_info(必填), force_remove_custom_column_values_in_old_scope(必填) |
accounts |
| ModifyAccountProfile | account_profile_info(必填) |
accounts |
| ModifyAccountsBatch | account_ids(必填), account_info(必填) |
accounts |
| RelocateAccountNodeByToken | token(必填), from_storage_node_id(必填), to_storage_node_id(必填) |
accounts |
| RemoveAccount | account_id(必填) |
accounts |
| RemoveAccountData | account_id(必填) |
accounts |
| RemoveAccountProfile | account_profile_id(必填) |
accounts |
| SetAccountFeatures | account_id(必填), features(必填) |
notifications |
| AddNotificationRule | rule(必填) |
notifications |
| AddNotificationTemplate | notification_template(必填) |
notifications |
| AddNotificationTransport | transport(必填) |
notifications |
| EnableNotificationRule | rule_id(必填), partner_id(必填), enable(必填) |
notifications |
| EnumerateAllActiveNotificationRules | 无 |
notifications |
| EnumerateAllInactiveNotificationRules | 无 |
notifications |
| EnumerateAllNotificationRules | 无 |
notifications |
| EnumerateAllNotificationTransports | 无 |
notifications |
| EnumerateNotificationRules | partner_id(必填) |
notifications |
| EnumerateNotificationTransports | partner_id(必填) |
notifications |
| EnumerateUnsubscribedEmails | entity(必填) |
notifications |
| GetNotificationRule | id(必填) |
notifications |
| GetNotificationTemplate | id(必填) |
notifications |
| GetNotificationTransport | id(必填) |
notifications |
| GetPartnerNotificationTemplate | template_id(必填), partner_id(必填) |
notifications |
| ModifyNotificationRule | rule(必填) |
notifications |
| ModifyNotificationTemplate | notification_template(必填) |
notifications |
| ModifyNotificationTransport | transport(必填) |
notifications |
| RemoveNotificationRule | id(必填) |
notifications |
| RemoveNotificationTemplate | id(必填) |
notifications |
| RemoveNotificationTransport | id(必填) |
notifications |
| UnsubscribeEmailFromRule | token(必填) |
notifications |
| UnsubscribeViewDelivery | token(必填) |
users |
| AddUser | user_info(必填) |
users |
| AddUserSettings | user_settings(必填) |
users |
| EnumerateUserRoles | 无 |
users |
| EnumerateUserSettings | user_id(可选), settings_type(可选) |
users |
| EnumerateUsers | partner_ids(必填) |
users |
| EnumerateUsersByFilter | filter(必填) |
users |
| EnumerateUsersWithSecurityOfficerFlag | partner_id(必填) |
users |
| GetRespectRemovedUserInfoById | user_id(必填) |
users |
| GetUserInfo | partner_id(必填), name_or_email(必填), password(必填) |
users |
| GetUserInfoById | user_id(必填) |
users |
| GetUserPassport | user_id(必填), authentication_context(必填) |
users |
| GetUserSettings | settings_id(必填) |
users |
| ModifyUser | user_info(必填) |
users |
| ModifyUserOnLogin | user_info(必填) |
users |
| ModifyUserSettings | user_settings(必填) |
users |
| RemoveUser | user_id(必填) |
users |
| RemoveUserSettings | settings_id(必填) |
users |
| SendUserInvitation | receiver_user_id(必填), redeem_link(必填), inviter_user_id(可选) |
users |
| SetCurrentUserSettings | current_user_settings_info(必填) |
misc |
| AddInvitationLink | partner_id(必填), invitation_link(必填) |
misc |
| EnumerateEndCustomerPrices | partner_id(必填) |
misc |
| GenerateReinstallationPassphrase | account_id(必填) |
misc |
| GetAutoDeployCommandLine | partner_id(必填), profile_name(可选) |
misc |
| GetAutoLoginUrl | partner_id(必填) |
misc |
| GetCommonStatisticsByToken | token(必填) |
misc |
| GetEffectiveEnvironmentInfo | 无 |
misc |
| GetEncryptionKeyByPassphrase | account_id(必填), passphrase(必填) |
misc |
| GetRemoteClientConnectionLocator | account_id(必填) |
misc |
| GetServerInfo | 无 |
misc |
| IsSimsPluginEnabled | partner_id(必填) |
misc |
| IsSimsPluginEnabledForAnyChild | partner_id(必填) |
misc |
| LookupTransport | partner_id(必填), transport_type(必填) |
misc |
| RemovePersonalData | partner_id(必填), from_timestamp(可选), to_timestamp(可选) |
misc |
| SetEndCustomerPrice | partner_id(必填), end_customer_price(必填) |
misc |
| UpdateStatistics | posting(必填) |
misc |
| VerifyEncryptionKey | account_id(必填), encryption_key(必填) |
storage_nodes |
| AddStorageNode | storage_node_info(必填) |
storage_nodes |
| EnumerateAllStorageNodes | 无 |
storage_nodes |
| EnumerateStorageNodes | storage_id(必填) |
storage_nodes |
| EnumerateStorageNodesByAccountId | accounts(必填) |
storage_nodes |
| EnumerateStorageNodesWithEnvironments | storage_id(必填) |
storage_nodes |
| GetStorageNodeInfo | storage_node_id(必填) |
storage_nodes |
| GetStorageNodeInfoByName | storage_id(必填), name(必填) |
storage_nodes |
| GetStorageNodeUpdateInfo | partner_id(必填) |
storage_nodes |
| RemoveStorageNode | storage_node_id(必填) |
storage_nodes |
| ReportStorageNodeEnvironment | storage_node_environment_info(必填) |
storage_nodes |
| ResolveStorageNodeExecutor | partner_name(必填), storage_name(必填), storage_node_name(必填) |
storage_nodes |
| UpdateStorageNode | storage_node_id(必填), update_with(必填) |
storage_nodes |
| UpdateStorageNodeMode | storage_node_id(必填), storage_node_mode_info(必填) |
storage_nodes |
| UpdateStorageNodeState | storage_node_id(必填), storage_node_state_info(必填) |
contacts |
| AddContactNote | contact_note_info(必填) |
contacts |
| AddContactPerson | contact_person_info(必填) |
contacts |
| EnumerateAllContactPersons | root_partner_id(必填), contact_person_types(必填), apply_mailing_option(必填) |
contacts |
| EnumerateContactNotes | partner_id(必填) |
contacts |
| EnumerateContactPersons | partner_ids(必填) |
contacts |
| EnumerateLastContactNotes | partners(必填) |
contacts |
| GetContactNoteInfo | contact_note_id(必填) |
contacts |
| GetContactPersonInfoById | contact_person_id(必填) |
contacts |
| ModifyContactNote | contact_note_info(必填) |
contacts |
| ModifyContactPerson | contact_person_info(必填) |
contacts |
| RemoveContactNote | contact_note_id(必填) |
contacts |
| RemoveContactPerson | contact_person_id(必填) |
storage |
| AddStorage | add_storage_info(必填) |
storage |
| EnumerateSoftwareOnlyAncestralPartnersStorages | partner_id(必填) |
storage |
| EnumerateStorageStatistics | partner_id(必填) |
storage |
| EnumerateStorages | partner_id(必填) |
storage |
| GetReservedStorage | storage_node_id(必填) |
storage |
| GetStorageInfo | storage_id(必填) |
storage |
| GetStorageInfoByName | partner_id(必填), name(必填) |
storage |
| ModifyStorage | storage_id(必填), storage_info(必填) |
storage |
| RemoveStorage | storage_id(必填) |
storage |
| ReserveStorageOnAccountNode | node_guid(必填), reserved_size(必填) |
view_delivery |
| AddViewDelivery | view_delivery_info(必填) |
view_delivery |
| EnumerateViewDeliveries | user_id(必填) |
view_delivery |
| GetViewDeliveryExternalRecipientsStates | view_delivery_id(必填) |
view_delivery |
| GetViewDeliveryInfoById | view_delivery_id(必填) |
view_delivery |
| GetViewDeliveryRecipientsStates | view_delivery_id(必填) |
view_delivery |
| IsViewDeliveryEnabled | partner_id(必填) |
view_delivery |
| ModifyViewDelivery | view_delivery_info(必填) |
view_delivery |
| OptInViewDelivery | token(必填) |
view_delivery |
| PerformViewDelivery | view_delivery_id(必填) |
view_delivery |
| RemoveViewDelivery | view_delivery_id(必填) |
labels |
| AddAccountLabel | account_id_collection(必填), label_collection(必填) |
labels |
| AddLabels | account_id(必填), label_collection(必填) |
labels |
| EnumerateAccountIdsByLabel | label(必填) |
labels |
| EnumerateAccountLabelsByAccountId | account_id(必填) |
labels |
| EnumerateAccountLabelsByAccountIds | account_ids(必填) |
labels |
| EnumerateAccountLabelsByNames | label_collection(必填) |
labels |
| EnumerateAllLabels | 无 |
labels |
| RemoveAccountLabel | account_id_collection(必填), label_collection(必填) |
labels |
| RemoveLabels | account_id(必填), label_collection(必填) |
jobs |
| AddRootJob | partner_id(必填), specification(必填), executor_id(必填) |
jobs |
| ControlJob | job_id(必填), action(必填) |
jobs |
| EnumerateJobs | partner_id(必填) |
jobs |
| EnumerateJobsByIds | ids(必填) |
jobs |
| EnumerateJobsByParentId | parent_job_id(必填), fetch_recursively(必填) |
jobs |
| FinishJobExecution | job_id(必填), execution_info(必填) |
jobs |
| GetJobById | job_id(必填) |
jobs |
| ReportJobExecutionProgress | job_id(必填), execution_info(必填) |
jobs |
| TakeJobForExecution | executor_type(必填), executor_id(必填) |
custom_columns |
| AddCustomColumn | custom_column(必填) |
custom_columns |
| EnumerateColumns | partner_id(必填) |
custom_columns |
| EnumerateCustomColumns | partner_id(必填) |
custom_columns |
| GetAccountCustomColumnValues | account_id(必填) |
custom_columns |
| GetCustomColumnInfoById | custom_column_id(必填) |
custom_columns |
| ModifyCustomColumn | custom_column(必填) |
custom_columns |
| RemoveCustomColumn | custom_column_id(必填) |
custom_columns |
| UpdateAccountCustomColumnValues | account_id(必填), values(必填) |
branding |
| FindBranding | partner_id(必填), application_type(必填) |
branding |
| GetEffectivePartnerBranding | application_type(必填) |
branding |
| GetPartnerBranding | partner_id(必填) |
branding |
| GetPartnerWebBranding | partner_id(必填) |
branding |
| ResetBranding | partner_id(必填), application_type(必填) |
branding |
| SetBranding | partner_id(必填), application_type(必填), branding_body(必填) |
branding |
| SetPartnerBranding | partner_id(必填), branding_archive(必填) |
branding |
| SetPartnerWebBranding | partner_id(必填), web_branding_archive(必填) |
products |
| AddProduct | product_info(必填) |
products |
| EnumerateProducts | partner_id(必填), current_partner_only(必填) |
products |
| FindProductByName | partner_id(必填), name(必填) |
products |
| GetProductInfo | product_id(必填), return_modified_features_only(必填) |
products |
| GetProductInfoWithExtraFeatures | product_id(必填), return_modified_features_only(必填) |
products |
| ModifyProduct | product_info(必填) |
products |
| RemoveProduct | product_id(必填) |
eula |
| AcceptEula | full_name(必填), role(必填) |
eula |
| DeclineEula | full_name(必填), role(必填) |
eula |
| GetCommonEulaInfo | 无 |
eula |
| GetEndCustomerEulaState | user_id(必填) |
eula |
| GetEulaInfo | 无 |
eula |
| GetPartnerEulaInfo | partner_id(必填) |
locations |
| AddLocation | location_info(必填) |
locations |
| EnumerateLocations | 无 |
locations |
| GetLocationInfo | location_id(必填) |
locations |
| GetLocationInfoByName | location_name(必填) |
locations |
| ReturnAccountToHomeLocation | account_id(必填) |
countries |
| EnumerateAccountRemoteAccessEndpoints | account_id(必填) |
countries |
| EnumerateCountries | 无 |
countries |
| GetCountryByIsoCode | country_iso_code(必填) |
countries |
| GetCountryByIsoCodeOrName | country_iso_code_or_name(必填) |
countries |
| GetCountryByName | country_name(必填) |
audit |
| EnumerateAuditActionEntityTypes | 无 |
audit |
| EnumerateAuditActionOperationTypes | 无 |
audit |
| EnumerateAuditActionResultTypes | 无 |
audit |
| EnumerateAuditActions | action_info(必填), from_(必填), to(必填), count_limit(必填), include_all_sub_partners(必填), reverse_order(必填) |
| GetAmazonEndpointForEmail | email(必填) | |
| RegisterEmail | email(必填) | |
| UnregisterEmail | email(必填) | |
regions |
| AddRegion | region_info(必填) |
regions |
| EnumerateRegions | 无 |
features |
| EnumerateFeatures | partner_id(必填) |
features |
| ResetFeaturesRestrictions | partner_id(必填) |
permissions |
| EnumeratePermissions | 无 |
templates |
| EnumerateTemplates | partner_id(必填), partner_only(必填) |
测试示例
# 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
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 251-method 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 247-tool mechanical generation. 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 247 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.Last updated624917MIT
- Alicense-qualityBmaintenanceAn MCP server for ConnectWise Manage PSA, enabling management of tickets, projects, contacts, billing, and service operations through ConnectWise Manage's API.Last updated16Apache 2.0
- Alicense-qualityAmaintenanceMCP 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.Last updatedApache 2.0

Keepit MCPofficial
Alicense-qualityBmaintenanceMCP server for interacting with Keepit backup and data protection services. Enables monitoring, management, and security operations through natural language.Last updated4MIT
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