Skip to main content
Glama

NinjaOne MCP Server

A Model Context Protocol (MCP) server for the NinjaOne RMM platform. Gives Claude and other MCP clients direct access to your NinjaOne environment — query devices, manage alerts, run scripts, create tickets, and more.

Features

  • 75 tools spanning all major NinjaOne API areas

  • OAuth2 client_credentials authentication with automatic token refresh

  • Pagination and device filter (df) support on all list endpoints

  • Zero runtime dependencies beyond axios and the MCP SDK

Prerequisites

Obtaining Credentials

  1. Log in to your NinjaOne portal and go to Administration → Apps → API

  2. Click Add to create a new API application

  3. Select Client Credentials as the authorization flow

  4. Grant the scopes your use case requires:

    • monitoring — read-only device/alert data

    • management — manage devices, organizations, policies

    • control — run scripts, trigger patch jobs, reboot devices

  5. Copy the Client ID and Client Secret — the secret is only shown once

Your instance base URL depends on your region:

Region

Base URL

US

https://app.ninjarmm.com

EU

https://eu.ninjarmm.com

OC

https://oc.ninjarmm.com

CA

https://ca.ninjarmm.com

Installation

git clone https://github.com/Allied-Business-Solutions/ninjaone-mcp.git
cd ninjaone-mcp
npm install
npm run build

Option 2 — Run directly with tsx (dev/testing)

git clone https://github.com/Allied-Business-Solutions/ninjaone-mcp.git
cd ninjaone-mcp
npm install

Then use npm run dev instead of node dist/index.js in the config below.

Configuration

Environment Variables

Variable

Required

Description

NINJA_BASE_URL

Yes

NinjaOne instance URL (e.g. https://app.ninjarmm.com)

NINJA_CLIENT_ID

Yes

OAuth2 client ID from the NinjaOne Developer Portal

NINJA_CLIENT_SECRET

Yes

OAuth2 client secret from the NinjaOne Developer Portal

Create a .env file by copying the example:

cp .env.example .env
# then edit .env with your credentials

Claude Desktop

Add the following to your claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "ninjaone": {
      "command": "node",
      "args": ["/absolute/path/to/ninjaone-mcp/dist/index.js"],
      "env": {
        "NINJA_BASE_URL": "https://app.ninjarmm.com",
        "NINJA_CLIENT_ID": "your_client_id",
        "NINJA_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Restart Claude Desktop after saving.

Claude Code (CLI)

Add the server to your project or global MCP config:

claude mcp add ninjaone \
  -e NINJA_BASE_URL=https://app.ninjarmm.com \
  -e NINJA_CLIENT_ID=your_client_id \
  -e NINJA_CLIENT_SECRET=your_client_secret \
  -- node /absolute/path/to/ninjaone-mcp/dist/index.js

Other MCP Clients

The server uses stdio transport and follows the standard MCP protocol. Point any MCP-compatible client at node dist/index.js with the three environment variables set.

Available Tools

Devices (30 tools)

Tool

Description

ninja_list_devices

List all managed devices with optional device filter (df) and pagination

ninja_get_device

Get full details for a single device by ID

ninja_get_devices_detailed

List devices with detailed settings and policy assignments

ninja_search_devices

Search devices by name, hostname, or serial number

ninja_update_device

Update device display name, location, role, or policy

ninja_get_device_activities

Get the activity log for a device

ninja_get_device_alerts

Get active alerts on a device

ninja_get_device_software

List installed software on a device

ninja_get_device_os_patches

Get pending/failed/rejected OS patches

ninja_get_device_installed_os_patches

Get OS patch install history

ninja_get_device_software_patches

Get pending/failed/rejected software patches

ninja_get_device_installed_software_patches

Get software patch install history

ninja_get_device_volumes

Get disk volume info (capacity, free space, filesystem)

ninja_get_device_disks

Get physical disk drive info

ninja_get_device_network_interfaces

Get network adapters, IPs, and MAC addresses

ninja_get_device_processors

Get CPU/processor details

ninja_get_device_windows_services

Get Windows service status

ninja_get_device_last_logged_on_user

Get the last user who logged on

ninja_get_device_active_jobs

Get currently running jobs on a device

ninja_get_device_dashboard_url

Get the direct URL to a device in the NinjaOne dashboard

ninja_get_device_scripting_options

List scripts and actions available for a device

ninja_get_device_custom_fields

Get custom field values for a device

ninja_update_device_custom_fields

Update custom field values on a device

ninja_reboot_device

Reboot a device (NORMAL or FORCED mode)

ninja_run_script

Run a custom script or built-in action on a device

ninja_submit_os_patch_scan

Trigger an OS patch scan

ninja_submit_os_patch_apply

Apply OS patches

ninja_submit_software_patch_scan

Trigger a software patch scan

ninja_submit_software_patch_apply

Apply software patches

ninja_approve_devices

Approve or reject pending device registrations

Organizations (10 tools)

Tool

Description

ninja_list_organizations

List all organizations (clients) with pagination

ninja_get_organizations_detailed

List organizations with full settings and policy mappings

ninja_get_organization

Get details for a specific organization

ninja_create_organization

Create a new organization

ninja_update_organization

Update an organization's name, description, or approval mode

ninja_get_organization_devices

List all devices in an organization

ninja_get_organization_locations

List all locations for an organization

ninja_create_organization_location

Create a new location for an organization

ninja_get_organization_custom_fields

Get custom field values for an organization

ninja_get_organization_end_users

Get end users associated with an organization

Alerts (2 tools)

Tool

Description

ninja_list_alerts

Get all active alerts across all devices

ninja_reset_alert

Dismiss/reset an alert by UID, optionally adding a resolution note

Activities (1 tool)

Tool

Description

ninja_list_activities

Query the system activity log with filters for class, date range, type, user, and device

Ticketing (12 tools)

Tool

Description

ninja_create_ticket

Create a new support ticket

ninja_get_ticket

Get a ticket by ID

ninja_update_ticket

Update ticket status, assignee, severity, priority, or tags

ninja_add_ticket_comment

Add a public or private comment to a ticket

ninja_get_ticket_log

Get the change log for a ticket

ninja_get_tickets_by_board

Query tickets on a specific board

ninja_list_boards

List all ticketing boards

ninja_list_ticket_statuses

List all available ticket statuses

ninja_list_ticket_forms

List all ticket forms

ninja_get_ticket_form

Get details and fields for a specific ticket form

ninja_list_ticketing_users

List app users and contacts available in ticketing

ninja_get_ticket_attributes

Get custom attribute definitions for tickets

Queries / Reports (19 tools)

All query tools support df (device filter), pageSize, and cursor for pagination.

Tool

Description

ninja_query_antivirus_status

AV product status across all devices

ninja_query_antivirus_threats

AV threats detected across all devices

ninja_query_device_health

Device health report (online/offline, alerts, patch compliance)

ninja_query_os_patches

Pending/failed/rejected OS patches fleet-wide

ninja_query_software_patches

Pending/failed/rejected software patches fleet-wide

ninja_query_installed_os_patches

OS patch install history fleet-wide

ninja_query_installed_software_patches

Software patch install history fleet-wide

ninja_query_software

Software inventory fleet-wide

ninja_query_logged_on_users

Last logged-on user fleet-wide

ninja_query_computer_systems

Hardware info (make, model, serial) fleet-wide

ninja_query_operating_systems

OS name, version, and build fleet-wide

ninja_query_network_interfaces

Network interface info fleet-wide

ninja_query_disks

Physical disk info fleet-wide

ninja_query_volumes

Disk volume info fleet-wide

ninja_query_windows_services

Windows service status fleet-wide

ninja_query_custom_fields

Custom field values fleet-wide

ninja_query_processors

CPU info fleet-wide

ninja_query_backup_usage

Backup storage usage fleet-wide

ninja_query_policy_overrides

Policy overrides fleet-wide

Policies (4 tools)

Tool

Description

ninja_list_policies

List all policies

ninja_get_device_policy_overrides

Get policy overrides for a specific device

ninja_query_policy_overrides

Query policy overrides across all devices

ninja_list_node_roles

List all available device/node roles

Users (7 tools)

Tool

Description

ninja_list_users

List all users (technicians and end users)

ninja_list_technicians

List all technician accounts

ninja_get_technician

Get a technician by ID

ninja_list_end_users

List all end users

ninja_get_end_user

Get an end user by ID

ninja_list_user_roles

List all user roles

ninja_list_contacts

List all contacts

Backup (2 tools)

Tool

Description

ninja_get_backup_jobs

Get backup job history and status

ninja_get_integrity_check_jobs

Get backup integrity check results

System (10 tools)

Tool

Description

ninja_list_groups

List all device groups

ninja_get_group_device_ids

Get device IDs for a specific group

ninja_list_scheduled_tasks

List all scheduled automation tasks

ninja_list_automation_scripts

List all automation scripts

ninja_list_notification_channels

List all configured notification channels

ninja_list_custom_fields

List all custom field definitions

ninja_list_locations

List all locations across all organizations

ninja_list_software_products

List all tracked software products

ninja_configure_webhook

Configure a webhook endpoint for NinjaOne events

ninja_disable_webhook

Disable the configured webhook

Device Filter Syntax

Many tools accept a df parameter for filtering devices. Examples:

org = 1                          # Devices in organization with ID 1
status = APPROVED                # Approved devices only
class in (WINDOWS_WORKSTATION, WINDOWS_SERVER)
location = 5 AND class = MAC

Development

# Run in dev mode (no build step required)
npm run dev

# Type-check and compile
npm run build

# Start the compiled server
npm start

Project Structure

src/
  index.ts          # MCP server entry point and request routing
  client.ts         # NinjaOne HTTP client with OAuth2 token management
  utils.ts          # Shared utilities
  tools/
    types.ts        # ToolDef interface
    index.ts        # Aggregates all tool arrays
    devices.ts      # Device management tools
    organizations.ts # Organization management tools
    alerts.ts       # Alert tools
    activities.ts   # Activity log tools
    ticketing.ts    # Ticketing tools
    queries.ts      # Fleet-wide query/report tools
    policies.ts     # Policy tools
    users.ts        # User management tools
    backup.ts       # Backup tools
    system.ts       # System/admin tools

License

MIT

Install Server
F
license - not found
C
quality
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Allied-Business-Solutions/ninjaone-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server