mcp-dattormmSAFE
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
A comprehensive Model Context Protocol (MCP) server for the Datto RMM API v2. Gives AI assistants like Claude full access to your RMM platform — query devices, manage sites, resolve alerts, run jobs, pull audit data, and control variables, all through natural language.
Features
- 55 tools covering the full Datto RMM API v2 surface
- OAuth 2.0 authentication with automatic token management (100-hour tokens, auto-refresh at 90 hours)
- Structured error handling — typed exceptions for auth, validation, rate-limit, not-found, and server errors
- Automatic retry with exponential backoff on rate limits (429) and transient server errors (5xx)
- Pagination support on all list endpoints (up to 250 results per page)
- Modular architecture — one file per API domain, easy to extend
- Async throughout — built on
httpxwith full async/await support
Installation
git clone https://github.com/jamesdeane2/mcp-dattormm.git cd mcp-dattormm uv pip install -e .
Configuration
Create a .env file in the project root:
DATTORMM_API_KEY=your-api-key DATTORMM_API_SECRET=your-api-secret
Getting API Credentials
- Log in to your Datto RMM
11b2dcb4209cOBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add mcp-dattormm -- uvx mcp-dattormm
{
"mcpServers": {
"mcp-dattormm": {
"command": "uvx",
"args": [
"mcp-dattormm"
]
}
}
}Exposed tools (55)
40 read · 11 write · 4 destructive. Blast radius: 4 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
dattormm_account_alerts_open | read | List all open alerts across the account. |
dattormm_account_alerts_resolved | read | List all resolved alerts across the account. |
dattormm_account_components | read | List available components (scripts/monitors) in the account. |
dattormm_account_devices | read | List all devices in the account with optional filters. |
dattormm_account_dnet_mappings | read | Get Datto Networking site mappings. |
dattormm_account_get | read | Get account details. |
dattormm_account_sites | read | List all sites in the account. |
dattormm_account_users | read | List all users in the account. |
dattormm_account_variable_create | write | Create a new account-level variable. |
dattormm_account_variable_delete | destructive | Delete an account-level variable. |
dattormm_account_variable_update | write | Update an existing account-level variable. |
dattormm_account_variables | read | List all account-level variables. |
dattormm_activity_logs | read | Get activity logs with optional filters. |
dattormm_alert_get | read | Get alert details by UID. |
dattormm_alert_resolve | read | Resolve an open alert. |
dattormm_audit_device | read | Get full audit data for a device. |
dattormm_audit_device_by_mac | read | Get audit data for a device by MAC address. |
dattormm_audit_device_software | read | Get software inventory for a device. |
dattormm_audit_esxi | read | Get ESXi host audit data. |
dattormm_audit_printer | read | Get printer audit data for a device. |
dattormm_device_alerts_open | read | List open alerts for a device. |
dattormm_device_alerts_resolved | read | List resolved alerts for a device. |
dattormm_device_get | read | Get device details by UID. |
dattormm_device_get_by_id | read | Get device details by numeric ID. |
dattormm_device_get_by_mac | read | Get device details by MAC address. |
dattormm_device_move | write | Move a device to a different site. |
dattormm_device_quickjob | write | Run a quick job (component) on a device. |
dattormm_device_udf_set | write | Set user defined fields (UDF) on a device. |
dattormm_device_warranty_set | write | Set warranty information on a device. |
dattormm_filters_custom | read | List all custom (user-created) device filters. |
dattormm_filters_default | read | List all default (built-in) device filters. |
dattormm_job_components | read | Get components associated with a job. |
dattormm_job_get | read | Get job details by UID. |
dattormm_job_results | read | Get job results for a specific device. |
dattormm_job_stderr | read | Get stderr output from a job execution on a device. |
dattormm_job_stdout | read | Get stdout output from a job execution on a device. |
dattormm_site_alerts_open | read | List open alerts for a site. |
dattormm_site_alerts_resolved | read | List resolved alerts for a site. |
dattormm_site_create | write | Create a new site. |
dattormm_site_devices | read | List all devices at a site. |
dattormm_site_devices_network | read | List network interface information for all devices at a site. |
dattormm_site_filters | read | List filters available for a site. |
dattormm_site_get | read | Get site details by UID. |
dattormm_site_proxy_delete | destructive | Delete proxy settings for a site. |
dattormm_site_proxy_update | write | Update proxy settings for a site. |
dattormm_site_settings | read | Get site settings. |
dattormm_site_update | write | Update an existing site. |
dattormm_site_variable_create | write | Create a new site-level variable. |
dattormm_site_variable_delete | destructive | Delete a site-level variable. |
dattormm_site_variable_update | write | Update an existing site-level variable. |
dattormm_site_variables | read | List all site-level variables. |
dattormm_system_pagination | read | Get pagination settings for the API. |
dattormm_system_rate | read | Get current API request rate information. |
dattormm_system_status | read | Get current system status. |
dattormm_user_reset_api_keys | destructive | Reset the API keys for the current user. |
Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (1 observation(s))
- Network
- declared (4 observation(s))
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (2)
dattormm_account_variable_delete, dattormm_site_proxy_delete, dattormm_site_variable_delete, dattormm_user_reset_api_keys
A comprehensive [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server for the [Datto RMM](https://www.datto.com/products/rmm/) API v2. Gives AI assistants like Claude full access to
Gates applied: no_behavioural_pass.
11b2dcb4209cfull audit observations/trust-audit/mcp-server/jamesdeane2__mcp-dattormm.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | 11b2dcb4209c | SAFE | B | 89 | first audit |
Questions
What tools does mcp-dattormm expose?
55 in total: 40 read-only, 11 that write, and 4 that can delete or overwrite (dattormm_account_variable_delete, dattormm_site_proxy_delete, dattormm_site_variable_delete, dattormm_user_reset_api_keys). Every one is listed on this page with its risk.
Is mcp-dattormm safe to connect to an agent?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B. Separately from the audit: 4 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does mcp-dattormm need?
No credential environment variables were found in its source, so it appears to need none.
How does mcp-dattormm run?
It speaks stdio, so it runs as a local process your client starts. It is published on PyPI as mcp-dattormm.
How current is this page?
The grade is for one exact copy of the source (11b2dcb4209c), read on 2026-10-12. The repository is watched and re-audited when it changes.