Datto RMM
MCP server for Datto RMM — devices, alerts, sites, jobs, and audit data.
Open source Open in the app JSON README (API)
About
MCP server for Datto RMM — devices, alerts, sites, jobs, and audit data.
Details
- Kind
- MCP servers
- Topic
- Cloud & DevOps
- Publisher
- wyre-technology
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 1.7.6
- Stars
- 3
- Forks
- 15
- Open pull requests
- 4
- Last push
- 2026-09-03T01:06:32Z
- Repository state
- ativo
- Language
- TypeScript
- License
- Apache-2.0
- Added
- 2026-08-29 04:01:41
- Updated
- 2026-08-29 04:01:41
- Origin id
io.github.wyre-technology/datto-rmm-mcp
README
# Datto RMM MCP Server MCP server for Datto RMM, enabling Claude to interact with your Datto RMM account. ## One-Click Deployment > [!IMPORTANT] > **Before you click:** this server depends on `@wyre-ai/node-datto-rmm`, > which is hosted on the **GitHub Packages** npm registry. GitHub Packages has no > anonymous access — even though the package is public, every `npm install` needs a > token. The cloud builder runs `npm install` for you, so you must give it one, or > the build fails with `npm error 401 Unauthorized ... npm.pkg.github.com`. > > 1. Create a GitHub **Personal Access Token** with the `read:packages` scope > ([classic token](https://github.com/settings/tokens/new?scopes=read:packages&description=datto-rmm-mcp%20deploy)). > Any GitHub account works — you do **not** need to be a member of the > `wyre-technology` org to read its public packages. > 2. Add it as a build variable when prompted by the deploy flow: > - **Cloudflare Workers** → set a build variable named **`NODE_AUTH_TOKEN`** to your PAT > (Workers → Settings → Build → Variables and Secrets). > - **DigitalOcean App Platform** → set an encrypted env var named **`GITHUB_TOKEN`** > with scope **Build Time** to your PAT (the `.do/deploy.template.yaml` already declares it). [](https://cloud.digitalocean.com/apps/new?repo=https://github.com/WYRE-AI/datto-rmm-mcp/tree/main) [](https://deploy.workers.cloudflare.com/?url=https://github.com/WYRE-AI/datto-rmm-mcp) > [!NOTE] > The DigitalOcean target builds the full Docker image and runs the complete MCP > server over HTTP — this is the recommended path for operators. This repo has no > Cloudflare Workers entrypoint (`src/worker.ts`), so the Workers button is not a > supported target yet; prefer DigitalOcean or the prebuilt container image > (`ghcr.io/wyre-ai/datto-rmm-mcp`). ## Features - **Device Management**: List, search, and get details for devices - **Alert Management**: View and resolve alerts - **Interactive Alert Card (MCP Apps)**: `datto_get_alert` renders as an interactive card in MCP Apps hosts (Claude Desktop/web) with an in-card "Resolve alert" round-trip; neutral by default, brandable via `window.__BRAND__` injection or `MCP_BRAND_*` env vars; plain-JSON behavior is unchanged in other hosts - **Site Management**: List and view site details - **Quick Jobs**: Run quick jobs on devices - **Audit Data**: Retrieve full device audit or software inventory ## Installation ### Via MCP Gateway (Recommended) This server is designed to work with the [MCP Gateway](https://github.com/wyre-technology/mcp-gateway) which handles authentication and credential management. ### Local Development This server's `@wyre-technology/*` dependencies live on the **GitHub Packages** npm registry, which requires a token even for public packages. Authenticate once, then install: ```bash # Authenticate npm to GitHub Packages (token needs the read:packages scope) export NODE_AUTH_TOKEN=$(gh auth token) # or a PAT with read:packages npm install npm run build npm start ``` The repo's `.npmrc` already points the `@wyre-technology` scope at GitHub Packages and reads the token from `NODE_AUTH_TOKEN`, so no further config is needed. ## Configuration The server accepts credentials via environment variables: | Variable | Description | |----------|-------------| | `DATTO_API_KEY` | Your Datto RMM API key | | `DATTO_API_SECRET` | Your Datto RMM API secret | | `DATTO_PLATFORM` | API platform: `pinotage`, `merlot`, `concord`, `vidal`, `zinfandel`, or `syrah` (default: `concord`) | When used with the MCP Gateway, credentials are injected via `X_API_KEY` and `X_API_SECRET` environment variables. ### Platform Selection Datto RMM uses regional API endpoints. Select the platform that matches your account: | Platform | Region/Description | |----------|-------------------| | `pinotage` | South Africa | | `merlot` | Europe | | `concord` | US East (default) | | `vidal` | Canada | | `zinfandel` | US West | | `syrah` | Australia | ## Available Tools | Tool | Description | |------|-------------| | `datto_list_devices` | List devices with optional site filter | | `datto_find_device` | Find a device by hostname (exact or partial match) and resolve its UID | | `datto_get_device` | Get device details by UID | | `datto_list_alerts` | List open alerts with optional site filter | | `datto_get_alert` | Get alert details by UID (renders as an interactive card in MCP Apps hosts) | | `datto_resolve_alert` | Resolve an alert | | `datto_list_sites` | List all sites | | `datto_get_site` | Get site details | | `datto_run_quickjob` | Run a quick job on a device | | `datto_get_device_audit` | Get device audit data (full or software only) | ## Docker ### Use the prebuilt image (no build, no token) ```bash docker pull ghcr.io/wyre-ai/datto-rmm-mcp:latest docker run -p 8080:8080 \ -e DATTO_API_KEY=xxx \ -e DATTO_API_SECRET=xxx \ -e DATTO_PLATFORM=concord \ ghcr.io/wyre-ai/datto-rmm-mcp:latest ``` The image is public and pulls anonymously, so this path needs no GitHub token at all. ### Build from source The build installs `@wyre-ai/node-datto-rmm` from GitHub Packages, which requires a token even though the package is public (see [One-Click Deployment](#one-click-deployment)). The `Dockerfile` takes it as the `GITHUB_TOKEN` build arg — omit it and the build fails at `npm ci` with `npm error 401 Unauthorized ... npm.pkg.github.com`: ```bash docker build --build-arg GITHUB_TOKEN=$(gh auth token) -t datto-rmm-mcp . docker run -p 8080:8080 \ -e DATTO_API_KEY=xxx \ -e DATTO_API_SECRET=xxx \ -e DATTO_PLATFORM=concord \ datto-rmm-mcp ``` The token is written to a temporary `.npmrc` that is deleted in the same layer, so it is never baked into the image. > [!NOTE] > The image defaults to `MCP_TRANSPORT=http` on port 8080, so `-p 8080:8080` is > required to reach it. Health check: `curl http://localhost:8080/health`. ## License Apache-2.0