Action1 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., "@Action1 MCP Servershow endpoints missing critical updates across all clients"
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.
Action1 MCP Server
An MCP server for the Action1 API. It lets an AI agent read an MSP's Action1 data: organizations (clients), managed endpoints, missing OS and third-party updates, and scheduled automations. All tools are read-only.
Transport: MCP Streamable HTTP at
POST /mcp, health probe atGET /healthStateless and multi-tenant: credentials arrive on every request as HTTP headers and are never stored; the OAuth access token is obtained per request and not cached
Python 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 | - | API credential Client ID |
|
| Yes | string | none | - | API credential Client Secret |
|
| No | string |
|
| Action1 data centre of the account |
|
| No | string | none | - | Organization used when a tool call omits |
|
Where to get them:
Client ID / Secret: in the Action1 console, open the API Credentials page and create a credential. The server exchanges them for a short-lived OAuth token on each request.
Region: the data centre your Action1 account lives in (the console host, e.g.
app.eu.action1.com=Europe).Organization id: returned by
action1_list_organizations.Permissions: the credential's role needs
view_endpoints(endpoints),view_automations(policies) and one ofapprove_updates/view_dashboards/manage_automations(missing updates).
A request to /mcp without the required headers gets HTTP 401 with the list of required
headers; an unknown region gets HTTP 400.
Related MCP server: AURON MCP
Tools
All tools return a JSON string. List tools return {items, count, total_items, has_more, next_offset}; pass next_offset as offset to get the next page. limit defaults to 50
(max 200). organization_id defaults to X-Action1-Default-Org-Id; for endpoints and updates
the value all (also used when no default is set) covers every organization.
Tool | Purpose | Parameters (required in bold) |
| Show the tools of one area | domain ( |
| List organizations (clients) | - |
| List managed endpoints | organization_id, limit, offset, filter, status, online_status, update_status, reboot_required |
| Full record of one endpoint | endpoint_id, organization_id |
| Scheduled automations of one organization | organization_id, limit, offset, filter |
| Missing updates, per organization or endpoint | organization_id, limit, offset, endpoint_id, security_severity, approval_status, filter |
Errors come back as a JSON envelope instead of an exception:
{"error": {"code": "unauthorized", "message": "Action1 rejected the API key / secret (token request failed)", "retryable": false}}code is one of not_configured, unauthorized, not_found, invalid_argument,
rate_limited, upstream_error.
Run locally
uv sync
uv run python -m action1_mcp # listens on 0.0.0.0:8080or with Docker:
docker build --platform linux/amd64 -t action1-mcp:dev .
docker run --rm -p 8080:8080 action1-mcp:devConfiguration (environment variables, all optional): MCP_HTTP_HOST (default 0.0.0.0),
MCP_HTTP_PORT (default 8080), LOG_LEVEL (default INFO). Credentials are 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-Action1-API-Key: api-key-xxxx@action1.com" \
-H "X-Action1-Secret: YOUR_SECRET" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
# endpoints with critical updates missing, across all organizations
curl -s http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "X-Action1-API-Key: api-key-xxxx@action1.com" \
-H "X-Action1-Secret: YOUR_SECRET" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"action1_list_endpoints","arguments":{"organization_id":"all","update_status":"ERROR","limit":10}}}'Unit tests (no network access needed):
uv run pytestDelivery notes
Policies = automations. Action1 now calls policies "automations";
action1_list_policieslists the scheduled automations of an organization.Region values. Both the canonical data-centre names and short codes (
us,eu,uk,au,NA-2) are accepted.UnitedKingdomis supported.List trimming.
action1_list_endpointsreturns a summary per endpoint; useaction1_get_endpointfor the full record.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only access to your VortexIQ store data: audits, KPIs, alerts, Brand DNA, reports, Ask VIQ.
Safe, read-only Postgres and MySQL access for AI agents. Audit log + column-level controls.
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
Read-only finance and operations controls for AI agents with evidence and safe next actions.
Related MCP Servers
- AlicenseAqualityCmaintenanceRead-only MCP server for the Action1 RMM REST API, enabling access to endpoints, missing updates, vulnerabilities, installed software, policies, automations, and reports.21Apache 2.0
- AlicenseNot gradedqualityCmaintenanceA read-only MCP gateway that enables AI agents to retrieve business data (sales, appointments, clients, inventory, etc.) from the AURON Suite backend with role-based access control, audit logging, and rate limiting.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to query an organization's device posture, compliance, policies, and software/CVE status through a remote, read-only, OAuth-secured MCP endpoint.MIT
- FlicenseAqualityBmaintenanceProvides read-only visibility into CyberQP privileged access management data, including customer and account metadata, tenant event logs, and Just-In-Time account status and policies, for AI assistants.10-