Connects to the Datto BCDR partner portal API to surface backup appliances, protected systems, and recovery points inside Claude. You get ten tools covering the usual ops tasks: listing SIRIS and Alto devices, pulling agent details, enumerating snapshots, fetching screenshot verifications as base64 PNGs, checking offsite sync status, and querying alerts or activity logs. The server prompts for missing parameters like serial numbers or date ranges using MCP's built-in elicitation. Ships with both environment variable auth for single-tenant setups and gateway mode for multi-tenant deployments where credentials arrive per-request via HTTP headers. Useful if you're running a Datto MSP practice and want to troubleshoot backup jobs or audit recovery point history without context switching to the web portal.
Model Context Protocol (MCP) server for the Datto BCDR (Backup Portal) API. Exposes SIRIS / Alto appliances, protected agents, recovery points, screenshot verifications, off-site sync status, alerts, and activity logs to AI assistants.
| Tool | Description |
|---|---|
datto_bcdr_list_devices | List all SIRIS/Alto appliances in the partner portal |
datto_bcdr_get_device | Get appliance details by serialNumber |
datto_bcdr_list_assets | List protected agents on an appliance |
datto_bcdr_get_asset | Get a specific protected agent |
datto_bcdr_list_backups | List recovery points for an agent |
datto_bcdr_list_screenshots | List screenshot verifications for an agent |
datto_bcdr_get_screenshot | Fetch a screenshot PNG (returned as base64 image content) |
datto_bcdr_get_offsite_status | Off-site sync status for an appliance |
datto_bcdr_list_alerts | Portal alerts (date-range filtered) |
datto_bcdr_list_activity | Activity log (date-range filtered) |
When the user omits required filters (date range, serial number, etc.) the server uses MCP elicitation to prompt for them.
| Variable | Required | Description |
|---|---|---|
DATTO_BCDR_PUBLIC_KEY | yes | Datto BCDR partner portal public key |
DATTO_BCDR_PRIVATE_KEY | yes | Datto BCDR partner portal private key (secret) |
DATTO_BCDR_REGION | no | us (default) or eu |
MCP_TRANSPORT | no | stdio (default) or http |
MCP_HTTP_PORT | no | HTTP listen port (default 8080) |
AUTH_MODE | no | env (default) or gateway |
When deployed behind the WYRE MCP Gateway, set AUTH_MODE=gateway and the
server will read credentials from per-request HTTP headers:
X-Datto-BCDR-Public-KeyX-Datto-BCDR-Private-KeyX-Datto-BCDR-Region (optional)Each request creates a fresh server instance with isolated credentials — no
cross-tenant process.env pollution.
npm install
npm run build
DATTO_BCDR_PUBLIC_KEY=... DATTO_BCDR_PRIVATE_KEY=... npm start
Run as HTTP for testing:
MCP_TRANSPORT=http npm start
curl http://localhost:8080/health
docker build -t datto-bcdr-mcp .
docker run --rm -p 8080:8080 \
-e DATTO_BCDR_PUBLIC_KEY=... \
-e DATTO_BCDR_PRIVATE_KEY=... \
datto-bcdr-mcp
Apache-2.0
DATTO_BCDR_PUBLIC_KEY*secretDatto BCDR partner portal public API key
DATTO_BCDR_PRIVATE_KEY*secretDatto BCDR partner portal private API key
DATTO_BCDR_REGIONdefault: usRegion: 'us' (default) or 'eu'
MCP_TRANSPORTdefault: stdioTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.
AUTH_MODEdefault: envCredential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.
LOG_LEVELdefault: infoLog verbosity: debug, info, warn, error