Skip to main content
Glama
Action1 MCP Server

Action1 MCP Server

by ComTom777

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 (TOOLS in src/action1_mcp/server.py). List tools return one page (offset/limit, default 20) plus total, 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_check to create the Action1 data source + custom report, requery_report to have agents collect now, then list_report_data to 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_script runs 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_updates installs chosen missing updates (package id -> version from list_missing_updates) on chosen endpoints now. No reboot unless asked; returns the run id at once; track it with list_automation_instance_endpoint_results, cancel with stop_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.git

or 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-mcp

Claude 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]"
pytest

Available Tools

33 tools
delete_custom_reportC
Destructive

Delete a custom report.

Inputs: report_id (required). Returns: result

delete_data_sourceA
Destructive

Delete a data source (delete reports that use it first).

Inputs: data_source_id (required). Returns: result

deploy_updatesA
Destructive

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_sourceB
Read-only

Get a data source including its script_text and columns.

Inputs: data_source_id (required).

get_endpointC
Read-only

Get full details of one endpoint.

Inputs: org_id (required), endpoint_id (required).

get_endpoint_missing_updatesA
Read-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_statusB
Read-only

Connected/disconnected/pending endpoint counts for an organization.

Inputs: org_id (required).

get_enterprise_usageC
Read-only

Enterprise-wide license/endpoint usage.

Inputs: no named parameters.

get_report_or_categoryC
Read-only

Get a report (or category) definition by id.

Inputs: report_or_category_id (required).

get_vulnerabilityC
Read-only

Get details of one CVE in an organization.

Inputs: cve_id (required), org_id (required).

list_automation_instance_endpoint_resultsA
Read-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_instancesA
Read-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_schedulesA
Read-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_sourcesA
Read-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_membersA
Read-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_groupsA
Read-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_softwareA
Read-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_endpointsA
Read-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_updatesA
Read-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_organizationsA
Read-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_dataA
Read-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_errorsA
Read-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_reportsA
Read-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_rolesA
Read-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_endpointsA
Read-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_usersA
Read-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_vulnerabilitiesA
Read-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_endpointsA
Read-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_reportC
Destructive

Ask agents to re-run the report's data source script now.

Inputs: org_id (required), report_id (required). Returns: result

run_scriptA
Destructive

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.

stop_automation_instanceB
Destructive

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

    B3.3/5.0

    Scored across 33 tools

    Disambiguation4/5

    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 Consistency4/5

    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.

    Tool Count3/5

    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.

    Completeness4/5

    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

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables 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
    • A
      license
      Not graded
      quality
      A
      maintenance
      Enables 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 npm
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables 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
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables 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