Datto RMM MCP Server
Datto RMM MCP Server
A Model Context Protocol server for the Datto RMM API v2, giving AI assistants full read/write access to devices, sites, alerts, audits, jobs, variables, filters, and activity logs.
Inspired by wyre-technology/datto-rmm-mcp (8 tools), this server covers the complete v2 API surface with 46 tools, plus OAuth token caching, automatic 401 re-auth, and 429 rate-limit retry with backoff.
Tools
Account
Tool | Description |
| Account details |
| All devices, filterable by hostname, type, OS, site name, or filter ID |
| All sites, filterable by name |
| Authentication users |
| Automation components (for quick jobs) |
| Datto Networking site mappings |
| Account variable CRUD |
Sites
Tool | Description |
| Site details with device counts |
| Create or update sites |
| Devices in a site |
| Device network interface info for a site |
| Site settings |
| Device filters visible for a site |
| Site proxy management |
| Site variable CRUD |
Devices
Tool | Description |
| Look up devices by UID, numeric ID, or MAC |
| Run a component on a device (with input variables) |
| Move a device to another site |
| Set user-defined fields (udf1–udf30) |
| Set warranty expiration date |
Alerts
Tool | Description |
| Open/resolved alerts, scoped to account, site, or device |
| Single alert details |
| Resolve an alert |
Audit
Tool | Description |
| Full device audit (hardware, OS, network, patches) |
| Installed software list |
| ESXi host / printer audits |
| Audit lookup by MAC address |
Jobs
Tool | Description |
| Job status and details |
| Job components |
| Per-device job results |
| Job output streams |
Other
Tool | Description |
| Default or custom device filters |
| Activity log search (date range, entities, free-text query) |
| Platform status, pagination config, or current rate-limit usage |
Setup
1. Get API credentials
In Datto RMM: Setup > Users > [your user] > API keys. Note your platform from your Datto RMM URL (e.g. merlot.centrastage.net → merlot).
2. Configure
Environment variables:
Variable | Required | Description |
| yes | API access key |
| yes | API secret key |
| yes* | One of |
| no | Full base URL; overrides |
| no |
|
| no | HTTP port when |
3. Run
npm install
npm run buildClaude Desktop / Claude Code (claude_desktop_config.json or .mcp.json):
{
"mcpServers": {
"datto-rmm": {
"command": "node",
"args": ["/path/to/dattormm-mcp/dist/index.js"],
"env": {
"DATTO_API_KEY": "your-key",
"DATTO_API_SECRET": "your-secret",
"DATTO_PLATFORM": "merlot"
}
}
}
}Docker (Streamable HTTP):
docker build -t dattormm-mcp .
docker run -p 3000:3000 \
-e DATTO_API_KEY=your-key \
-e DATTO_API_SECRET=your-secret \
-e DATTO_PLATFORM=merlot \
-e MCP_TRANSPORT=http \
dattormm-mcpThe HTTP transport runs stateless at POST / with a GET /health endpoint.
Notes
Rate limits: Datto allows 600 reads and 100 writes per 60 seconds. The client retries once on 429 honoring
Retry-After; check live usage withdatto_get_system_info(request_rate).Pagination: list endpoints return at most 250 records per page — responses include
pageDetailswith next-page info; passpage/maxto the tools.Auth: OAuth tokens (100 h lifetime) are cached in-memory and transparently refreshed on expiry or 401.
The
POST /v2/user/resetApiKeysendpoint is intentionally not exposed — it would invalidate the credentials the server is running with.Alert mute/unmute endpoints are omitted: Datto removed alert muting in RMM 8.9.0.
License
MIT