Datto RMM MCP Server
Provides full read/write access to Datto RMM (Remote Monitoring and Management) devices, sites, alerts, audits, jobs, variables, filters, and activity logs via the v2 API.
Click on "Deploy 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., "@Datto RMM MCP Server list devices in the New York site"
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.
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 |
Related MCP server: ConnectWise Live MCP Server
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
Available Tools
46 toolsdatto_create_account_variableCreate account variableC
Create an account-level variable.
Inputs: name (required), value (required), masked.
datto_create_siteCreate siteC
Create a new site in the account.
Inputs: name (required), notes, onDemand, description, +1 more.
datto_create_site_variableCreate site variableC
Create a variable in a site.
Inputs: name (required), value (required), siteUid (required), masked.
datto_delete_account_variableDelete account variableB
Delete an account-level variable by its numeric ID.
Inputs: variableId (required).
datto_delete_site_proxyDelete site proxyB
Delete the proxy settings of a site.
Inputs: siteUid (required).
datto_delete_site_variableDelete site variableB
Delete a site variable by its numeric ID.
Inputs: siteUid (required), variableId (required).
datto_get_accountGet accountA
Get the authenticated Datto RMM account's details (name, UID, currency, descriptors).
Inputs: no named parameters.
datto_get_alertGet alertA
Get details of a single alert by its UID.
Inputs: alertUid (required).
datto_get_audit_by_macGet device audit by MAC addressB
Get audit data of the device(s) matching a MAC address. Format: 12 hex characters, no separators.
Inputs: macAddress (required).
datto_get_deviceGet deviceA
Get details of a device by its UID.
Inputs: deviceUid (required).
datto_get_device_auditGet device auditA
Get the full audit data of a device (hardware, OS, network, disks, installed patches, etc.).
Inputs: deviceUid (required).
datto_get_device_by_idGet device by IDA
Get details of a device by its numeric device ID (as opposed to its UID).
Inputs: deviceId (required).
datto_get_device_by_macGet device by MAC addressB
Get the device(s) matching a MAC address. Format: 12 hex characters, no separators (XXXXXXXXXXXX).
Inputs: macAddress (required).
datto_get_device_softwareGet device software auditC
List the audited software installed on a device.
Inputs: deviceUid (required), max, page.
datto_get_esxi_auditGet ESXi host auditC
Get the audit data of an ESXi host device.
Inputs: deviceUid (required).
datto_get_jobGet jobA
Get the status and details of a job by its UID.
Inputs: jobUid (required).
datto_get_job_componentsGet job componentsB
List the components of a job.
Inputs: jobUid (required).
datto_get_job_resultsGet job results for a deviceB
Get the results of a job on a specific device.
Inputs: jobUid (required), deviceUid (required).
datto_get_job_stderrGet job stderrB
Get the standard error output of a job's run on a specific device.
Inputs: jobUid (required), deviceUid (required).
datto_get_job_stdoutGet job stdoutB
Get the standard output of a job's run on a specific device.
Inputs: jobUid (required), deviceUid (required).
datto_get_printer_auditGet printer auditB
Get the audit data of a printer device.
Inputs: deviceUid (required).
datto_get_siteGet siteA
Get details of a site (including device counts) by its UID.
Inputs: siteUid (required).
datto_get_site_settingsGet site settingsB
Get the settings of a site (proxy, privacy mode, etc.).
Inputs: siteUid (required).
datto_get_system_infoGet system infoA
Get platform system information: 'status' (version, uptime), 'pagination' (page size limits), or 'request_rate' (current API rate-limit usage for this account).
Inputs: type.
datto_list_account_variablesList account variablesB
List the account-level variables (usable in components and policies).
Inputs: max, page.
datto_list_activity_logsList activity logsA
Search the account's activity logs (audit trail of user and system actions). Defaults to the last 24 hours unless 'from' is set. Use searchAfter from the previous response page for cursor-based pagination.
Inputs: from, size, order, until, +7 more.
datto_list_alertsList alertsA
List open or resolved alerts. Scope to the whole account (default), a single site (siteUid), or a single device (deviceUid).
Inputs: max, page, muted, status, +2 more.
datto_list_componentsList componentsA
List the account's components (scripts/automation components). Use a component's UID with datto_run_quickjob.
Inputs: max, page.
datto_list_devicesList devicesA
List all devices in the account, with optional filters. Filter text params use SQL LIKE matching (use * as wildcard). Paginated; check pageDetails in the response for more pages.
Inputs: max, page, filterId, hostname, +3 more.
datto_list_dnet_site_mappingsList Datto Networking site mappingsB
List sites with their mapped Datto Networking (DNET) network IDs.
Inputs: max, page.
datto_list_filtersList device filtersA
List device filters. 'default' returns the built-in filters; 'custom' returns filters created in the account (requires administrator role). Filter IDs can be used with datto_list_devices and datto_list_site_devices.
Inputs: max, page, type.
datto_list_site_devicesList site devicesB
List the devices of a site.
Inputs: siteUid (required), max, page, filterId.
datto_list_site_filtersList site device filtersB
List the device filters visible for a site.
Inputs: siteUid (required), max, page.
datto_list_site_network_interfacesList site device network interfacesA
List shortened device records with network interface information (IP/MAC) for a site.
Inputs: siteUid (required), max, page.
datto_list_sitesList sitesA
List all sites in the account. Optionally filter by site name (LIKE match).
Inputs: max, page, siteName.
datto_list_site_variablesList site variablesC
List the variables of a site.
Inputs: siteUid (required), max, page.
datto_list_usersList usersB
List the authentication users of the account.
Inputs: max, page.
datto_move_deviceMove device to siteB
Move a device from its current site to another site.
Inputs: siteUid (required), deviceUid (required).
datto_resolve_alertResolve alertB
Resolve (close) an alert by its UID.
Inputs: alertUid (required).
datto_run_quickjobRun quick jobA
Run a component as a quick job on a device. Find component UIDs with datto_list_components. Returns the created job; poll it with datto_get_job and fetch output with datto_get_job_stdout.
Inputs: jobName (required), deviceUid (required), componentUid (required), variables.
datto_set_device_udfSet device UDFsA
Set user-defined fields (UDFs) on a device. Provide only the fields to change, keyed udf1 through udf30.
Inputs: udfs (required), deviceUid (required).
datto_set_device_warrantySet device warrantyC
Set the warranty expiration date of a device.
Inputs: deviceUid (required), warrantyDate (required).
datto_set_site_proxySet site proxyB
Create or update the proxy settings for a site.
Inputs: host (required), port (required), type (required), siteUid (required), +2 more.
datto_update_account_variableUpdate account variableB
Update an existing account-level variable by its numeric ID.
Inputs: variableId (required), name, value, masked.
datto_update_siteUpdate siteB
Update an existing site's name, description, or notes.
Inputs: name (required), siteUid (required), notes, description.
datto_update_site_variableUpdate site variableB
Update an existing site variable by its numeric ID.
Inputs: siteUid (required), variableId (required), name, value, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 46 tools
Most tools have clearly distinct purposes, but some overlap exists (e.g., datto_get_device vs datto_get_device_by_id, datto_list_devices vs datto_list_site_devices). Descriptions help differentiate, but the similarity could cause occasional misselection.
All tools follow a consistent ‘datto_verb_noun’ pattern using snake_case. Verbs like get, list, create, delete, update, set, move, resolve, run are used uniformly. No mixing of conventions.
46 tools is high, but the Datto RMM domain is complex with many entities (sites, devices, alerts, jobs, variables, etc.). The count is slightly above ideal but still reasonable given the API’s breadth. Each tool serves a distinct purpose.
The set covers most core workflows (CRUD for sites and variables, listing and managing devices, alerts, jobs), but notable gaps exist: no tool to delete a site, no tool to manage components beyond listing, and no user management beyond listing. These gaps may require workarounds.
Maintenance
Related MCP Connectors
List devices, alerts, antivirus status and audit logs, and run scripts on devices in Pulseway.
Scopable MSP API: clients, quotes, assessments, compliance, QBRs. OAuth 2.1, read-only or read-write
Read devices, users and policies; scan, lock, restart devices and install apps in Hexnode.
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive access to the Kaseya VSAX (VSA 10) REST API v3 through 67 specialized tools. It enables users to manage devices, run workflows, execute scripts, and oversee organizational data using natural language and OData query support.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with ConnectWise Manage through 45 tools across Service, Operations, and Finance domains, with tier-based access control for finance tools.MIT
- AlicenseNot gradedqualityCmaintenanceEnables interaction with N-able RMM (N-sight) API to manage clients, sites, devices, and retrieve monitoring data such as checks, patches, and performance history.Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables Claude to interact with Datto RMM accounts for device, alert, site, and quick job management through natural language.Apache 2.0