
Datto BCDR
io.github.wyre-technologyPublished by GitHub account wyre-technologyv1.1.4Updated Oct 24, 2026
MCP server for Datto BCDR — appliances, agents, recovery points, screenshots, alerts.
Overview
Read-only MCP server for the Datto BCDR backup portal, letting an assistant inspect appliances, protected agents, recovery points, screenshots and alerts.
- What you can do
- List and inspect SIRIS/Alto appliances and their details by serial number
- List protected agents on an appliance and fetch a single agent
- List recovery points and screenshot verifications for an agent, and fetch a screenshot image
- Check off-site sync status for an appliance
- List portal alerts and activity log entries filtered by date range
- Prompt for missing filters such as date range or serial number
- When to use it
- Useful for managed service providers or backup administrators who want to ask an assistant about Datto BCDR backup health: which appliances exist, whether agents are protected, when the last recovery points were taken, whether off-site sync is current, and which alerts are open.
- Requirements
- Runs as a local stdio process (Docker image or npm build). Requires Datto BCDR partner portal API credentials in DATTO_BCDR_PUBLIC_KEY and DATTO_BCDR_PRIVATE_KEY, plus optional DATTO_BCDR_REGION (us or eu). HTTP mode additionally requires CONDUIT_S2S_SECRET and the X-Gateway-S2S header; gateway mode takes credentials from X-Datto-BCDR-Public-Key and X-Datto-BCDR-Private-Key headers.
Installation
In SourceWeft
- Open Datto BCDR in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Datto BCDR MCP Server
[Release] [License: Apache 2.0]
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.
Tools
When the user omits required filters (date range, serial number, etc.) the server uses MCP elicitation to prompt for them.
Features
- Interactive Device Card (MCP Apps, SEP-1865):
datto_bcdr_get_devicerenders as a read-only interactive card in MCP Apps hosts (Claude Desktop/web) showing the appliance's backup status at a glance — neutral by default, brandable viawindow.__BRAND__injection orMCP_BRAND_*env vars; plain-JSON behavior is unchanged in other hosts. Editui/and runnpm run build:uito regenerate the embedded card bundle.
Configuration
Copy .env.example and set the variables below. The stdio
transport reads DATTO_BCDR_* and is not affected by HTTP service-to-service
auth.
/health stays unauthenticated and does not read credentials.
HTTP authentication
With MCP_TRANSPORT=http and CONDUIT_S2S_SECRET set, every /mcp request must include X-Gateway-S2S. A missing or invalid header returns 401 before vendor credentials are read.
The header value is t=<unix seconds>,v1=<hex hmac-sha256>. The signed message is the ASCII string t=<unix seconds> (the same timestamp prefix), and the HMAC key is CONDUIT_S2S_SECRET. Timestamps more than 300 seconds from the server clock are rejected.
In AUTH_MODE=gateway, /mcp also requires X-Datto-BCDR-Public-Key and X-Datto-BCDR-Private-Key (X-Datto-BCDR-Region is optional). Those headers are the only credential source for that request. A request missing either key returns 401 and does not fall back to DATTO_BCDR_PUBLIC_KEY / DATTO_BCDR_PRIVATE_KEY. Each request creates a fresh server instance with isolated credentials.
The WYRE MCP Gateway signs X-Gateway-S2S with the per-vendor subkey provisioned as CONDUIT_S2S_SECRET and injects the Datto headers:
Local development
HTTP refuses to start until CONDUIT_S2S_SECRET is set:
Local HTTP without a service-to-service secret is development-only. It binds 127.0.0.1 only and logs a warning. A non-loopback MCP_HTTP_HOST makes startup exit. The container image sets MCP_HTTP_HOST=0.0.0.0, so this bypass also needs -e MCP_HTTP_HOST=127.0.0.1 when using the image:
Docker
The image listens on 0.0.0.0 inside the container (MCP_HTTP_HOST) and defaults to AUTH_MODE=gateway. Publish the port on loopback and pass the S2S secret. In gateway mode, Datto credentials arrive on each request as headers; they are not read from the environment.
Compose refuses to start when CONDUIT_S2S_SECRET is unset or empty, sets AUTH_MODE=gateway, publishes 127.0.0.1:8080:8080, and does not inject DATTO_BCDR_PUBLIC_KEY or DATTO_BCDR_PRIVATE_KEY:
Single-tenant HTTP (AUTH_MODE=env) still requires the S2S secret, then uses DATTO_BCDR_PUBLIC_KEY and DATTO_BCDR_PRIVATE_KEY:
License
Apache-2.0
Source: README.md at commit c0e0580
Tools
0Version history
1- v1.1.4LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts