Atera Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Atera Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Model Context Protocol (MCP) server for interacting with the Atera RMM API. Implements a decision tree architecture for efficient tool discovery and reduced context overhead.
[!IMPORTANT] Before you click: this server depends on@wyre-technology/node-atera, which is hosted on the GitHub Packages npm registry. GitHub Packages has no anonymous access — even though the package is public, everynpm installneeds a token. The cloud builder runsnpm installfor you, so you must give it one, or the build fails withnpm error 401 Unauthorized ... npm.pkg.github.com.
>
1. Create a GitHub Personal Access Token with theread:packagesscope (classic token). Any GitHub account works — you do not need to be a member of thewyre-technologyorg 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/app.yamlalready declares it).
[!NOTE] The DigitalOcean target builds the full Docker image and runs the complete MCP server over HTTP — this is the recommended path for operators. The Cloudflare Workers target is currently a thin entrypoint stub (the/mcproute returns501 Not Implemented) and is best suited to gateway-style deployments; for a full self-hosted server prefer DigitalOcean or the prebuilt container image (ghcr.io/wyre-technology/atera-mcp).
This package is published to the GitHub Packages npm registry, which requires a token even for public packages. Authenticate once, then install:
# 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 @wyre-technology/atera-mcpThe 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.
Or build from source:
git clone https://github.com/wyre-technology/atera-mcp.git
cd atera-mcp
npm install
npm run buildSet the following environment variable:
| Variable | Required | Description |
|---|---|---|
ATERA_API_KEY | Yes | Your Atera API key from Admin > API |
Add to your claude_desktop_config.json:
{
"mcpServers": {
"atera": {
"command": "npx",
"args": ["@wyre-technology/atera-mcp"],
"env": {
"ATERA_API_KEY": "your-api-key-here"
}
}
}
}Configure in the gateway registry:
{
"name": "atera-mcp",
"command": "node",
"args": ["/path/to/atera-mcp/dist/index.js"],
"env": {
"ATERA_API_KEY": "${ATERA_API_KEY}"
}
}docker build -t atera-mcp .
docker run -e ATERA_API_KEY=your-key atera-mcpThis server uses a navigation-based approach to tool discovery:
atera_navigate tool is availableatera_navigate with a domain (customers, agents, tickets, alerts, contacts)atera_back to return to domain selectionThis architecture:
Manage customer (company) records.
atera_customers_list - List customers with paginationatera_customers_get - Get customer by IDatera_customers_create - Create new customerManage devices/endpoints with the Atera agent installed.
atera_agents_list - List agents with optional customer filteratera_agents_get - Get agent by IDatera_agents_get_by_machine - Get agent by machine nameManage service tickets.
atera_tickets_list - List tickets with filtersatera_tickets_get - Get ticket by IDatera_tickets_create - Create new ticketatera_tickets_update - Update existing ticketMonitor alerts from devices and agents.
atera_alerts_list - List alerts with filtersatera_alerts_get - Get alert by IDatera_alerts_by_agent - List alerts for an agentatera_alerts_by_device - List alerts for a deviceManage customer contacts.
atera_contacts_list - List all contactsatera_contacts_get - Get contact by IDatera_contacts_by_customer - List contacts for a customerUser: List all open tickets
Claude: I'll navigate to the tickets domain and list open tickets.
[Calls atera_navigate with domain: "tickets"]
[Calls atera_tickets_list with ticketStatus: "Open"]
Result: Found 15 open tickets...# Install dependencies
npm install
# Build
npm run build
# Run in development
npm run dev
# Type check
npm run typecheck
# Lint
npm run lint
# Test
npm run testAtera API allows 700 requests per minute. The underlying node-atera client handles rate limiting automatically with request queuing.
Apache-2.0
Contributions welcome! Please read our contributing guidelines and submit PRs to the main branch.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.