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 Server which of my endpoints are missing critical Windows updates?"
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
Unofficial: not affiliated with, endorsed by, or supported by Action1 Corporation. An MCP server for the Action1 RMM API, built on action1-python-client.
What it can do:
Read: organizations, endpoints, groups, missing updates, vulnerabilities, automations, reports, users, roles, data sources (
TOOLSinsrc/action1_mcp/server.py). List tools return one page (offset/limit, default 20) plustotal, with Action1's server-side text filter (contains), so a tenant with thousands of CVEs stays fast and small.Build custom reports: the model writes a PowerShell check, calls
publish_checkto create the Action1 data source + custom report,requery_reportto have agents collect now, thenlist_report_datato read results, e.g. "check my Windows servers against CIS Level 1 and summarize what fails". The workflow is described to the model in the server's instructions.Run scripts:
run_scriptruns PowerShell as SYSTEM on chosen endpoints right now and returns each one's output (capped at ~10,000 chars by Action1; never reboots). Good for one-off diagnostics or fetching files a data source wrote, e.g. the full CIS v8 details JSON.Deploy updates:
deploy_updatesinstalls chosen missing updates (package id -> version fromlist_missing_updates) on chosen endpoints now. No reboot unless asked; returns the run id at once; track it withlist_automation_instance_endpoint_results, cancel withstop_automation_instance. Pair it with an ITSM MCP server and the model can go from a ticket to a proposed patch run that you approve.Change only report-related things (
WRITE_TOOLS): requery, delete a custom report or data source, stop a running automation. No endpoint/user/org deletes. MCP clients ask before calling non-read-only tools.
Data sources run on online Windows agents only (Action1 data sources are PowerShell-only);
results arrive asynchronously, typically minutes after requery_report.
Install
pip install git+https://github.com/ComTom777/action1-mcp-server.gitor use it without installing, via uv:
uvx --from git+https://github.com/ComTom777/action1-mcp-server.git action1-mcp
Related MCP server: Octopus Deploy Official MCP Server
Configure
Create an API key in the Action1 console (Configuration → API Credentials), then add the server to your MCP client.
Claude Code:
claude mcp add action1 \
-e ACTION1_CLIENT_ID=api-key-xxxx@action1.com \
-e ACTION1_CLIENT_SECRET=... \
-e ACTION1_REGION=europe \
-- uvx --from git+https://github.com/ComTom777/action1-mcp-server.git action1-mcpClaude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"action1": {
"command": "uvx",
"args": ["--from", "git+https://github.com/ComTom777/action1-mcp-server.git", "action1-mcp"],
"env": {
"ACTION1_CLIENT_ID": "api-key-xxxx@action1.com",
"ACTION1_CLIENT_SECRET": "...",
"ACTION1_REGION": "europe"
}
}
}
}ACTION1_REGION is north_america (default), north_america_2, europe, uk, or australia.
Adding a tool
Add "client_method_name": "description" to TOOLS in server.py. The tool's parameters
come from the client method's signature.
Development
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -e ".[dev]"
pytestAvailable Tools
33 toolsdelete_custom_reportCDestructive
Delete a custom report.
Inputs: report_id (required). Returns: result
delete_data_sourceADestructive
Delete a data source (delete reports that use it first).
Inputs: data_source_id (required). Returns: result
deploy_updatesADestructive
Install updates now on the given endpoints. packages maps a package id (the id of a
list_missing_updates item) to the version to install (its versions[].version). No reboot
unless reboot=true (users then get a warning and 4 hours to save work). Installs can take
long: by default returns at once with instance_id - check progress later with
list_automation_instance_endpoint_results, cancel with stop_automation_instance.
Inputs: org_id (required), packages (required), endpoint_ids (required), reboot, +1 more.
get_data_sourceBRead-only
Get a data source including its script_text and columns.
Inputs: data_source_id (required).
get_endpointCRead-only
Get full details of one endpoint.
Inputs: org_id (required), endpoint_id (required).
get_endpoint_missing_updatesARead-only
List updates missing on one endpoint. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: org_id (required), endpoint_id (required), limit, offset, +1 more.
get_endpoint_statusBRead-only
Connected/disconnected/pending endpoint counts for an organization.
Inputs: org_id (required).
get_enterprise_usageCRead-only
Enterprise-wide license/endpoint usage.
Inputs: no named parameters.
get_report_or_categoryCRead-only
Get a report (or category) definition by id.
Inputs: report_or_category_id (required).
get_vulnerabilityCRead-only
Get details of one CVE in an organization.
Inputs: cve_id (required), org_id (required).
list_automation_instance_endpoint_resultsARead-only
Per-endpoint results of one automation run. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: org_id (required), instance_id (required), limit, offset, +1 more.
list_automation_instancesARead-only
List automation runs (instances) in an organization. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: org_id (required), limit, offset, contains.
list_automation_schedulesARead-only
List automation schedules in an organization. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: org_id (required), limit, offset, contains.
list_data_sourcesARead-only
List data sources (PowerShell scripts agents run to feed reports). Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: limit, offset, contains.
list_endpoint_group_membersARead-only
List endpoints in an endpoint group. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: org_id (required), group_id (required), limit, offset, +1 more.
list_endpoint_groupsARead-only
List endpoint groups in an organization. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: org_id (required), limit, offset, contains.
list_endpoint_installed_softwareARead-only
List software installed on one endpoint. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: org_id (required), endpoint_id (required), limit, offset, +1 more.
list_endpointsARead-only
List all managed endpoints (computers) in an organization. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: org_id (required), limit, offset, contains.
list_missing_updatesARead-only
List missing OS/third-party updates across an organization. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: org_id (required), limit, offset, contains.
list_organizationsARead-only
List all organizations. Call this first to get the org_id other tools need. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: limit, offset, contains.
list_report_dataARead-only
Get the rows of a report for an organization. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: org_id (required), report_id (required), limit, offset, +1 more.
list_report_errorsARead-only
Endpoints where a report's data source script failed, with the error. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: org_id (required), report_id (required), limit, offset, +1 more.
list_reportsARead-only
List available reports and report categories. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: limit, offset, contains.
list_rolesARead-only
List roles. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: limit, offset, contains.
list_update_missing_endpointsARead-only
List endpoints missing a specific update package version. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: org_id (required), package_id (required), version_id (required), limit, +2 more.
list_usersARead-only
List console users. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: limit, offset, contains.
list_vulnerabilitiesARead-only
List vulnerabilities (CVEs) detected in an organization. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: org_id (required), limit, offset, contains.
list_vulnerability_endpointsARead-only
List endpoints affected by a CVE. Returns one page {total, offset, has_more, items} (limit default 20, max 200). contains is Action1's server-side text filter on the items' own fields (e.g. CVE id or product name for vulnerabilities) - check total before paging through everything.
Inputs: cve_id (required), org_id (required), limit, offset, +1 more.
publish_checkA
Publish a PowerShell script as an Action1 data source and (if report_name is given) a custom report showing its columns. Pass data_source_id to update an existing data source in place - reports built on it pick up new columns automatically.
Inputs: name (required), script (required), columns (required), report_name, +1 more.
requery_reportCDestructive
Ask agents to re-run the report's data source script now.
Inputs: org_id (required), report_id (required). Returns: result
run_scriptADestructive
Run a PowerShell script now, as SYSTEM, on the given endpoints (ids from list_endpoints) and wait up to wait_seconds for results. Returns each endpoint's status and output (stdout, capped at ~10,000 chars by Action1). Never reboots. Offline endpoints stay pending - check later with list_automation_instance_endpoint_results(instance_id).
Inputs: org_id (required), script (required), endpoint_ids (required), wait_seconds.
searchCRead-only
Full-text search across endpoints, software, etc. in an organization.
Inputs: query (required), org_id (required), limit. Returns: result
stop_automation_instanceBDestructive
Stop a running automation (e.g. a deploy_updates or run_script run).
Inputs: org_id (required), instance_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 33 tools
Most tools target clearly distinct resources and actions, but there is a cluster of easily confusable update-related tools (list_missing_updates, list_update_missing_endpoints, get_endpoint_missing_updates) whose boundaries rely on reading descriptions carefully. The report/data-source tools are also numerous and slightly overlapping. A few oddballs like publish_check (which actually publishes a script) and requery_report are less self-explanatory.
Naming is predominantly consistent snake_case verb_noun (list_*, get_*, delete_*, stop_*), which is easy to predict. A handful of deviations (search, publish_check, requery_report, deploy_updates, run_script) break the pattern slightly but remain readable. Overall convention is stable.
33 tools is on the heavy side and exceeds the comfortable range for a single agent surface, risking selection overload. However, the breadth of the domain (endpoints, vulnerabilities, updates, automation, reports, users/roles) means most tools do correspond to a real operation. Borderline but defensible given the platform's scope.
The surface covers discovery, read, and key write/action operations (run_script, deploy_updates, requery_report, delete_data_source, delete_custom_report) plus lifecycle paging. Some gaps exist: no create/update for users or roles, no delete for automations (only stop), and limited report authoring beyond publish_check. Core workflows are nonetheless covered.
Related MCP Connectors
- DNS-DATA RemoteDeprecatedcom.dns-data
Connect AI assistants to authorized Windows and macOS devices for files, commands, and management.
Amazon Ads, Seller Central, Vendor Central and AMC data for AI agents. Read-only by default.
Connect AI assistants to your approved computer for files, commands, browser and desktop tasks.
Connect AI assistants to explicitly paired computers, servers, and VMs for permitted remote actions.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to read-only query an MSP's Action1 data — organizations, managed endpoints, missing OS and third-party updates, and scheduled automations — using per-request credentials that are never stored. Supports multi-tenant, stateless access over Streamable HTTP with paginated list results and structured error responses.Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to inspect, query, and diagnose projects, deployments, releases, runbooks, tasks, tenants, Kubernetes resources, machines, certificates, accounts, and interruptions, with optional write operations and read-only safeguards.512 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to read managed Microsoft 365 client tenants, baselines, alignment scores, policies, Secure Score, Entra users/groups/roles, and audit activity, and on explicit request run assessments and queue reports. Access is read-only apart from those two run tools, which never modify tenant policies.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to read managed endpoints, their software and hardware audit, patch status, agent procedures, alarms, tickets, organizations and machine groups, and, with explicit confirmation, deploy patches or run an agent procedure on an endpoint. Supports stateless multi-tenant access with per-request credentials for the VSA REST API.Apache 2.0