Atera MCP Server
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., "@Atera MCP ServerShow all open critical alerts for my customers"
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.
Atera MCP Server
An MCP server for the Atera RMM and PSA API (v3). It lets an AI agent read an MSP's Atera data (customers, monitored agents, alerts, tickets and contacts) and, on explicit request, create customers and tickets, update tickets and add ticket comments.
Transport: MCP Streamable HTTP at
POST /mcp, health probe atGET /healthStateless and multi-tenant: the API key arrives on every request as an HTTP header and is never stored; every tool is listed from the first
tools/listPython 3.12, uv, FastMCP, httpx
License: Apache-2.0, Copyright 2026 MSPbots.ai
Authentication headers
Header | Required | Type | Default | Allowed values | Description | Example |
| Yes | string | none | - | Atera API token (a leading |
|
Where to get it:
In Atera open Admin -> Data management -> API -> New token. A token has an expiration date (at most one year), an optional IP allowlist, and either full access or per-domain Read / Write / Delete permissions.
Grant Read on Customers, Agents, Tickets, Alerts and Contacts for the read tools; add Write on Customers and Tickets only if the agent should create or update them.
If the token restricts IP addresses, allow the public egress IP of the environment that runs this server.
How the key is sent to Atera: JWT-format tokens (the current token format) are sent as
Authorization: Bearer <token>; older static keys are sent as X-API-KEY: <key>. Only one of
the two headers is ever sent.
A request to /mcp without the header gets HTTP 401 listing the required header.
Related MCP server: atera-mcp
Tools
All tools return a JSON string. List tools take page (from 1) and itemsInPage (default and
maximum 50) and return {items, count, page, total_pages, total_items, has_more}.
Tool | Purpose | Parameters (required in bold) |
| Show the tools of one area | domain ( |
| List all areas and their tools | - |
| List customers | page, itemsInPage |
| One customer | customerId |
| Create a customer (write) | CustomerName, BusinessNumber, Domain, Address, City, State, Country, ZipCode, Phone, Fax, Notes, Website |
| List monitored machines (summary) | page, itemsInPage, customerId |
| One agent's full record | agentId |
| Agent(s) by computer name | machineName |
| List tickets (summary) | page, itemsInPage, ticketStatus ( |
| One ticket's full record | ticketId |
| Create a ticket (write) | TicketTitle, CustomerID, CustomerEmail, ContactID, TicketPriority, TicketImpact, TicketStatus, TicketType, TechnicianContactID, Description |
| Change ticket fields (write) | ticketId, TicketTitle, TicketPriority, TicketImpact, TicketStatus, TicketType, TechnicianContactID |
| Add a comment, internal by default (write) | ticketId, comment, isInternal |
| List alerts | page, itemsInPage, alertSeverity ( |
| One alert | alertId |
| Alerts of one agent | agentId, page, itemsInPage |
| Alerts of one monitored device | deviceId, page, itemsInPage |
| List contacts | page, itemsInPage |
| One contact | contactId |
| Contacts of one customer | customerId, page, itemsInPage |
Errors come back as a JSON envelope instead of an exception:
{"error": {"code": "unauthorized", "message": "Atera returned HTTP 401: ...", "retryable": false}}code is one of not_configured, unauthorized, not_found, invalid_argument,
rate_limited, upstream_error. Atera allows about 700 requests per minute per account; 429
responses are retried with backoff.
Run locally
uv sync
uv run python -m atera_mcp # listens on 0.0.0.0:8080or with Docker:
docker build --platform linux/amd64 -t atera-mcp:dev .
docker run --rm -p 8080:8080 atera-mcp:devConfiguration (environment variables, all optional): MCP_HTTP_HOST (default 0.0.0.0),
MCP_HTTP_PORT (default 8080), LOG_LEVEL (default INFO). The key is never read from the
environment.
Testing example
# list tools
curl -s http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "X-Atera-Api-Key: your-atera-api-key" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
# open tickets
curl -s http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "X-Atera-Api-Key: your-atera-api-key" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"atera_tickets_list","arguments":{"ticketStatus":"Open","itemsInPage":10}}}'Unit tests (no network access needed):
uv run pytestDelivery notes
All tools always listed. Older versions only listed a navigation tool until one was called. Behind a stateless gateway that hid every other tool, so this version lists all 20 tools up front.
atera_navigateandatera_backremain for compatibility and only describe the tools.Tool count (20). Kept as is because the tool names are an existing contract.
Write tools.
atera_customers_create,atera_tickets_create,atera_tickets_updateandatera_tickets_add_commentchange data; descriptions tell the agent to use them only on explicit request, and ticket comments default to internal. There are no delete tools.List trimming.
atera_agents_listandatera_tickets_listreturn summary fields; use the matching_gettool for the full record.
License
Related MCP Connectors
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Connect any AI agent to 1,000+ apps and 27,000+ actions through one remote MCP server (OAuth).
Related MCP Servers
- FlicenseAqualityFmaintenanceMCP server that exposes 300+ AI agents as tools via a single API key. Supports listing agents, invoking any agent with chat-completion style messages, checking agent health, and retrieving platform statistics.54-
- AlicenseNot gradedqualityAmaintenanceMCP server for the Atera RMM API. Implements a decision tree architecture for efficient tool discovery, enabling Claude to manage devices, alerts, tickets, and customers in Atera.Apache 2.0
- FlicenseNot gradedqualityCmaintenanceEnables AI-driven IT service management by exposing the full Halo ITSM REST API through 172 tools across 43 resource domains to any MCP-compatible client.2-
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to perform comprehensive Windows system health diagnostics, security checks, developer workflows, and maintenance tasks via 85 tools with actionable recommendations, over MCP and OpenAI-compatible HTTP.MIT