Atlas / MCP servers / jamesdeane2 / mcp-dattormm

mcp-dattormmSAFE

mcp/jamesdeane2/mcp-dattormm
Verdict
SAFE
Grade
B
Trust score
89 /100
Exposed tools
55 40r · 11w · 4d
Transport
stdio
License
MIT
Stars
0
01

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 httpx with 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

  1. Log in to your Datto RMM
Read from source at commit 11b2dcb4209cOBSERVED · 2026-10-12
Advertisement
02

Connect

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-code
claude mcp add mcp-dattormm -- uvx mcp-dattormm
claude-desktop
{
  "mcpServers": {
    "mcp-dattormm": {
      "command": "uvx",
      "args": [
        "mcp-dattormm"
      ]
    }
  }
}
03

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.

ToolRiskDescription
dattormm_account_alerts_openreadList all open alerts across the account.
dattormm_account_alerts_resolvedreadList all resolved alerts across the account.
dattormm_account_componentsreadList available components (scripts/monitors) in the account.
dattormm_account_devicesreadList all devices in the account with optional filters.
dattormm_account_dnet_mappingsreadGet Datto Networking site mappings.
dattormm_account_getreadGet account details.
dattormm_account_sitesreadList all sites in the account.
dattormm_account_usersreadList all users in the account.
dattormm_account_variable_createwriteCreate a new account-level variable.
dattormm_account_variable_deletedestructiveDelete an account-level variable.
dattormm_account_variable_updatewriteUpdate an existing account-level variable.
dattormm_account_variablesreadList all account-level variables.
dattormm_activity_logsreadGet activity logs with optional filters.
dattormm_alert_getreadGet alert details by UID.
dattormm_alert_resolvereadResolve an open alert.
dattormm_audit_devicereadGet full audit data for a device.
dattormm_audit_device_by_macreadGet audit data for a device by MAC address.
dattormm_audit_device_softwarereadGet software inventory for a device.
dattormm_audit_esxireadGet ESXi host audit data.
dattormm_audit_printerreadGet printer audit data for a device.
dattormm_device_alerts_openreadList open alerts for a device.
dattormm_device_alerts_resolvedreadList resolved alerts for a device.
dattormm_device_getreadGet device details by UID.
dattormm_device_get_by_idreadGet device details by numeric ID.
dattormm_device_get_by_macreadGet device details by MAC address.
dattormm_device_movewriteMove a device to a different site.
dattormm_device_quickjobwriteRun a quick job (component) on a device.
dattormm_device_udf_setwriteSet user defined fields (UDF) on a device.
dattormm_device_warranty_setwriteSet warranty information on a device.
dattormm_filters_customreadList all custom (user-created) device filters.
dattormm_filters_defaultreadList all default (built-in) device filters.
dattormm_job_componentsreadGet components associated with a job.
dattormm_job_getreadGet job details by UID.
dattormm_job_resultsreadGet job results for a specific device.
dattormm_job_stderrreadGet stderr output from a job execution on a device.
dattormm_job_stdoutreadGet stdout output from a job execution on a device.
dattormm_site_alerts_openreadList open alerts for a site.
dattormm_site_alerts_resolvedreadList resolved alerts for a site.
dattormm_site_createwriteCreate a new site.
dattormm_site_devicesreadList all devices at a site.
dattormm_site_devices_networkreadList network interface information for all devices at a site.
dattormm_site_filtersreadList filters available for a site.
dattormm_site_getreadGet site details by UID.
dattormm_site_proxy_deletedestructiveDelete proxy settings for a site.
dattormm_site_proxy_updatewriteUpdate proxy settings for a site.
dattormm_site_settingsreadGet site settings.
dattormm_site_updatewriteUpdate an existing site.
dattormm_site_variable_createwriteCreate a new site-level variable.
dattormm_site_variable_deletedestructiveDelete a site-level variable.
dattormm_site_variable_updatewriteUpdate an existing site-level variable.
dattormm_site_variablesreadList all site-level variables.
dattormm_system_paginationreadGet pagination settings for the API.
dattormm_system_ratereadGet current API request rate information.
dattormm_system_statusreadGet current system status.
dattormm_user_reset_api_keysdestructiveReset the API keys for the current user.
04

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.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (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)

MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
dattormm_account_variable_delete, dattormm_site_proxy_delete, dattormm_site_variable_delete, dattormm_user_reset_api_keys
Why it matters. 4 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
README.md:8
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.

Audited 2026-10-12 · audit v0.4.1 · source sha 11b2dcb4209cfull audit observations/trust-audit/mcp-server/jamesdeane2__mcp-dattormm.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1211b2dcb4209cSAFEB89first audit
06

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.

Advertisement