NinjaOne MCP Server
Click on "Install 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., "@NinjaOne MCP Servershow me all Windows servers with low disk space"
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.
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_credentialsauthentication with automatic token refreshPagination and device filter (
df) support on all list endpointsZero runtime dependencies beyond
axiosand the MCP SDK
Related MCP server: action1-mcp
Prerequisites
Node.js 18 or later
A NinjaOne account with API access
OAuth2 API credentials (see Obtaining Credentials)
Obtaining Credentials
Log in to your NinjaOne portal and go to Administration → Apps → API
Click Add to create a new API application
Select Client Credentials as the authorization flow
Grant the scopes your use case requires:
monitoring— read-only device/alert datamanagement— manage devices, organizations, policiescontrol— run scripts, trigger patch jobs, reboot devices
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 |
|
EU |
|
OC |
|
CA |
|
Installation
Option 1 — Clone and build (recommended)
git clone https://github.com/Allied-Business-Solutions/ninjaone-mcp.git
cd ninjaone-mcp
npm install
npm run buildOption 2 — Run directly with tsx (dev/testing)
git clone https://github.com/Allied-Business-Solutions/ninjaone-mcp.git
cd ninjaone-mcp
npm installThen use npm run dev instead of node dist/index.js in the config below.
Configuration
Environment Variables
Variable | Required | Description |
| Yes | NinjaOne instance URL (e.g. |
| Yes | OAuth2 client ID from the NinjaOne Developer Portal |
| 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 credentialsClaude Desktop
Add the following to your claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%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.jsOther 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 |
| List all managed devices with optional device filter ( |
| Get full details for a single device by ID |
| List devices with detailed settings and policy assignments |
| Search devices by name, hostname, or serial number |
| Update device display name, location, role, or policy |
| Get the activity log for a device |
| Get active alerts on a device |
| List installed software on a device |
| Get pending/failed/rejected OS patches |
| Get OS patch install history |
| Get pending/failed/rejected software patches |
| Get software patch install history |
| Get disk volume info (capacity, free space, filesystem) |
| Get physical disk drive info |
| Get network adapters, IPs, and MAC addresses |
| Get CPU/processor details |
| Get Windows service status |
| Get the last user who logged on |
| Get currently running jobs on a device |
| Get the direct URL to a device in the NinjaOne dashboard |
| List scripts and actions available for a device |
| Get custom field values for a device |
| Update custom field values on a device |
| Reboot a device (NORMAL or FORCED mode) |
| Run a custom script or built-in action on a device |
| Trigger an OS patch scan |
| Apply OS patches |
| Trigger a software patch scan |
| Apply software patches |
| Approve or reject pending device registrations |
Organizations (10 tools)
Tool | Description |
| List all organizations (clients) with pagination |
| List organizations with full settings and policy mappings |
| Get details for a specific organization |
| Create a new organization |
| Update an organization's name, description, or approval mode |
| List all devices in an organization |
| List all locations for an organization |
| Create a new location for an organization |
| Get custom field values for an organization |
| Get end users associated with an organization |
Alerts (2 tools)
Tool | Description |
| Get all active alerts across all devices |
| Dismiss/reset an alert by UID, optionally adding a resolution note |
Activities (1 tool)
Tool | Description |
| Query the system activity log with filters for class, date range, type, user, and device |
Ticketing (12 tools)
Tool | Description |
| Create a new support ticket |
| Get a ticket by ID |
| Update ticket status, assignee, severity, priority, or tags |
| Add a public or private comment to a ticket |
| Get the change log for a ticket |
| Query tickets on a specific board |
| List all ticketing boards |
| List all available ticket statuses |
| List all ticket forms |
| Get details and fields for a specific ticket form |
| List app users and contacts available in ticketing |
| Get custom attribute definitions for tickets |
Queries / Reports (19 tools)
All query tools support df (device filter), pageSize, and cursor for pagination.
Tool | Description |
| AV product status across all devices |
| AV threats detected across all devices |
| Device health report (online/offline, alerts, patch compliance) |
| Pending/failed/rejected OS patches fleet-wide |
| Pending/failed/rejected software patches fleet-wide |
| OS patch install history fleet-wide |
| Software patch install history fleet-wide |
| Software inventory fleet-wide |
| Last logged-on user fleet-wide |
| Hardware info (make, model, serial) fleet-wide |
| OS name, version, and build fleet-wide |
| Network interface info fleet-wide |
| Physical disk info fleet-wide |
| Disk volume info fleet-wide |
| Windows service status fleet-wide |
| Custom field values fleet-wide |
| CPU info fleet-wide |
| Backup storage usage fleet-wide |
| Policy overrides fleet-wide |
Policies (4 tools)
Tool | Description |
| List all policies |
| Get policy overrides for a specific device |
| Query policy overrides across all devices |
| List all available device/node roles |
Users (7 tools)
Tool | Description |
| List all users (technicians and end users) |
| List all technician accounts |
| Get a technician by ID |
| List all end users |
| Get an end user by ID |
| List all user roles |
| List all contacts |
Backup (2 tools)
Tool | Description |
| Get backup job history and status |
| Get backup integrity check results |
System (10 tools)
Tool | Description |
| List all device groups |
| Get device IDs for a specific group |
| List all scheduled automation tasks |
| List all automation scripts |
| List all configured notification channels |
| List all custom field definitions |
| List all locations across all organizations |
| List all tracked software products |
| Configure a webhook endpoint for NinjaOne events |
| 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 = MACDevelopment
# Run in dev mode (no build step required)
npm run dev
# Type-check and compile
npm run build
# Start the compiled server
npm startProject 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 toolsLicense
MIT
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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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