NinjaOne MCP Server

NinjaOne MCP Server

Enables Claude to manage NinjaOne RMM infrastructure, including devices, patches, ticketing, and organizations through natural language commands.

Category
Visit Server

README

NinjaOne MCP Server

A comprehensive Model Context Protocol (MCP) server for NinjaOne RMM API integration with Claude. Enables Claude to manage devices, tickets, patches, organizations, and more across your entire NinjaOne infrastructure.

Features

✨ Comprehensive Coverage

  • Device management (list, search, get details, alerts)
  • Device actions (reboot, run scripts)
  • Patch management (OS and software patches)
  • Ticketing system (create, update, comment on tickets)
  • Reporting (device health, antivirus)
  • Organization management
  • Contact management
  • Generic API access for advanced use cases

🔐 Security

  • OAuth 2.0 authentication with automatic token refresh
  • Secure credential handling via environment variables
  • No secrets in version control

⚙️ Production Ready

  • TypeScript for type safety
  • Comprehensive error handling
  • Pagination support

Installation

Prerequisites

  • Node.js 20 LTS or higher
  • npm or yarn
  • NinjaOne account with API access

Setup

  1. Clone the repository:
git clone https://github.com/soroushalamdari/ninjaone-mcp.git
cd ninjaone-mcp
  1. Install dependencies:
npm install
  1. Create .env file:
cp .env.example .env
  1. Add your NinjaOne credentials to .env:
NINJA_CLIENT_ID=your_access_key_id
NINJA_CLIENT_SECRET=your_secret_access_key
NINJA_REDIRECT_URI=https://yourdomain.com/callback
NINJA_API_BASE_URL=https://api.ninjarmm.com
  1. Build the server:
npm run build

OAuth Setup

  1. Get your credentials from NinjaOne:

    • Log into your NinjaOne dashboard
    • Navigate to Settings → API
    • Create a new API application
    • Note your Client ID and Client Secret
  2. Set the redirect URI:

    • Use the exact URI you configured in .env

Claude Desktop Integration

Setup Instructions

  1. Build the MCP server:
npm run build
  1. Add to Claude Desktop config:

On macOS:

# Edit ~/.claude/claude_desktop_config.json
nano ~/.claude/claude_desktop_config.json

On Windows:

# Edit %APPDATA%\Claude\claude_desktop_config.json
# Open: C:\Users\<YourUsername>\AppData\Roaming\Claude\claude_desktop_config.json
  1. Add this to the mcpServers section:
{
  "mcpServers": {
    "ninjaone-mcp": {
      "command": "node",
      "args": [
        "/path/to/ninjaone-mcp/dist/index.js"
      ],
      "env": {
        "NINJA_CLIENT_ID": "your_access_key_id",
        "NINJA_CLIENT_SECRET": "your_secret_access_key",
        "NINJA_REDIRECT_URI": "https://yourdomain.com/callback",
        "NINJA_API_BASE_URL": "https://api.ninjarmm.com"
      }
    }
  }
}

Replace /path/to/ninjaone-mcp/ with your actual installation path:

  • macOS: /Users/username/ninjaone-mcp
  • Windows: C:\\Users\\username\\ninjaone-mcp
  1. Restart Claude Desktop:
    • Close Claude Desktop completely
    • Reopen it
    • The NinjaOne MCP will now be available

Verify Installation

In Claude Desktop, you should see the NinjaOne tools available. Test with:

"List all devices"
"Show me active alerts"
"Get device health report"

Troubleshooting

"NinjaOne MCP not showing up"

  • Verify the path to dist/index.js is correct
  • Make sure you've run npm run build
  • Check that Claude Desktop was completely restarted
  • Verify JSON syntax in config file (use JSON validator)

"NINJA_CLIENT_ID or NINJA_CLIENT_SECRET error"

  • Ensure environment variables are in the env section
  • Verify credentials are correct in NinjaOne settings
  • Check for extra spaces or quotes in values

"node: command not found"

  • Ensure Node.js 20+ is installed: node --version
  • Use full path to node if needed on Windows

Available Tools (20+ Tools)

Device Management

  • list_devices - List all devices with pagination
  • get_device - Get detailed device information
  • search_devices - Search devices using filter syntax
  • get_device_alerts - Get active alerts for a device
  • get_all_alerts - Get all active alerts across devices

Device Actions

  • reboot_device - Reboot device (graceful or force)
  • run_script - Run script or built-in action on device

Patch Management

  • get_os_patches - Get OS patch status for device
  • get_software_patches - Get software patch status for device

Software & Inventory

  • get_device_software - Get software inventory for device

Ticketing

  • create_ticket - Create new support ticket
  • get_ticket - Get ticket details
  • update_ticket - Update ticket information
  • add_ticket_comment - Add comment to ticket
  • get_ticket_forms - Get available ticket forms

Organizations

  • list_organizations - List all organizations
  • get_organization - Get organization details

Reports & Queries

  • get_device_health - Device health report
  • get_antivirus_status - Antivirus status report

Contacts

  • list_contacts - List all contacts

Advanced/Generic API

  • api_get - Make generic GET request to any NinjaOne endpoint
  • api_post - Make generic POST request to any NinjaOne endpoint

Example Prompts

Ask Claude:

"List all devices"
"Show me critical alerts"
"Get patch status for device ABC123"
"Create a ticket for offline device"
"Generate device health report"
"Search for all Windows 10 devices"
"Get antivirus status across all systems"

Development

Build:

npm run build

Watch mode:

npm run dev

Type checking:

npm run type-check

Security Considerations

⚠️ Never commit .env file

  • Use .env.example as template
  • Always use environment variables for credentials

License

MIT License

Support

For issues or questions, check NinjaOne API Documentation

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured