{"_id":"@avantguardllc/mcp-ninjaone","_rev":"5-28b3401760836b850ec74bca14ba1bcc","name":"@avantguardllc/mcp-ninjaone","dist-tags":{"latest":"1.5.3"},"versions":{"1.4.3":{"name":"@avantguardllc/mcp-ninjaone","version":"1.4.3","keywords":["mcp","claude","ninjaone","ninja","rmm","msp","decision-tree"],"license":"Apache-2.0","_id":"@avantguardllc/mcp-ninjaone@1.4.3","maintainers":[{"name":"avantguardllc","email":"appadmin@avantguard.it"}],"bin":{"ninjaone-mcp":"dist/index.js"},"dist":{"shasum":"3e59cb4630a8c9eb291fe759a0897b42b292a2b9","tarball":"https://registry.npmjs.org/@avantguardllc/mcp-ninjaone/-/mcp-ninjaone-1.4.3.tgz","fileCount":87,"integrity":"sha512-a2rXUsRDzCstsCrHWKCV8BGXRkwFZrlmT+XslB6JffRlmm9pwthjL26c6A08p0IYfNBaPLcFn2nKKba8JTJjOA==","signatures":[{"sig":"MEUCIEMwCptuzJgVEUEUJq/9oT7Y4Z0rrvxM0W5xfyn8Pv1YAiEApa35mm3rYz9LCIHk9BUgfgR1N16dJZnRMbMgW+YWn8U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":280229},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"9836b7cfd60d1556a9551f12b5c595181f029a1e","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/index.js","pack:mcpb":"node scripts/pack-mcpb.js","typecheck":"tsc --noEmit","test:watch":"vitest","validate:mcpb":"mcpb validate manifest.json"},"_npmUser":{"name":"avantguardllc","email":"appadmin@avantguard.it"},"_npmVersion":"10.8.2","description":"NinjaOne MCP server with decision tree architecture for Claude","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@modelcontextprotocol/sdk":"^1.25.3","@avantguardllc/node-ninjaone":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0","semantic-release":"^25.0.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^6.19.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^6.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ninjaone_1.4.3_1777920785181_0.2705781792522406","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@avantguardllc/mcp-ninjaone","version":"1.5.0","keywords":["mcp","claude","ninjaone","ninja","rmm","msp","decision-tree"],"author":{"name":"Wyre Technology"},"license":"Apache-2.0","_id":"@avantguardllc/mcp-ninjaone@1.5.0","maintainers":[{"name":"avantguardllc","email":"appadmin@avantguard.it"}],"homepage":"https://github.com/wyre-technology/ninjaone-mcp#readme","bugs":{"url":"https://github.com/wyre-technology/ninjaone-mcp/issues"},"bin":{"ninjaone-mcp":"dist/index.js"},"dist":{"shasum":"0b09763f998ff63ded054fb12bdbfe832849b73a","tarball":"https://registry.npmjs.org/@avantguardllc/mcp-ninjaone/-/mcp-ninjaone-1.5.0.tgz","fileCount":91,"integrity":"sha512-qzSacqbJyM7lfV3aaN2XTpErvP//unJ8T/7vbSfEDi7Z+JlXwl8DHO4y2Gb1uCDUtct/kveouMECOskAIhNpMA==","signatures":[{"sig":"MEYCIQCoNKMi57fLA2yUUss3VNgni55KqvzJmAC+TfnzUNfA/gIhAJqRWj7AnS3JQ7iiYYIMvGrmFQM49MyHX+R++onsapBi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":314550},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"9836b7cfd60d1556a9551f12b5c595181f029a1e","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/index.js","pack:mcpb":"node scripts/pack-mcpb.js","typecheck":"tsc --noEmit","test:watch":"vitest","validate:mcpb":"mcpb validate manifest.json"},"_npmUser":{"name":"avantguardllc","email":"appadmin@avantguard.it"},"repository":{"url":"git+https://github.com/wyre-technology/ninjaone-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"NinjaOne MCP server with decision tree architecture for Claude","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@modelcontextprotocol/sdk":"^1.25.3","@avantguardllc/node-ninjaone":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0","semantic-release":"^25.0.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^6.19.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^6.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ninjaone_1.5.0_1777941432799_0.9026146735857103","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@avantguardllc/mcp-ninjaone","version":"1.5.1","keywords":["mcp","claude","ninjaone","ninja","rmm","msp","decision-tree"],"author":{"name":"Wyre Technology"},"license":"Apache-2.0","_id":"@avantguardllc/mcp-ninjaone@1.5.1","maintainers":[{"name":"avantguardllc","email":"appadmin@avantguard.it"}],"homepage":"https://github.com/wyre-technology/ninjaone-mcp#readme","bugs":{"url":"https://github.com/wyre-technology/ninjaone-mcp/issues"},"bin":{"ninjaone-mcp":"dist/index.js"},"dist":{"shasum":"2827d61ad4b0c0de6418755b3c06abbdf0150715","tarball":"https://registry.npmjs.org/@avantguardllc/mcp-ninjaone/-/mcp-ninjaone-1.5.1.tgz","fileCount":107,"integrity":"sha512-CPfU35ED3FJnlyXzeRCIr6nKFDbe223wjBgNsqgjmjTQvvJDLoWe/tYBaTxMEhLSg2yqO4RduNUUC/O6vyd1VQ==","signatures":[{"sig":"MEQCIEo3c6SKPCpk9dgKXSa7PYBRoLNbXUzpaWRquYhv8NeGAiAWgJcUl1Q82xVD0vf+fX8YAQ4P3+yPmVVKXU00MpP3NQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":343467},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"01f1e98ce6919428fa793c6fd32b149903a48b7d","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/index.js","pack:mcpb":"node scripts/pack-mcpb.js","typecheck":"tsc --noEmit","test:watch":"vitest","validate:mcpb":"mcpb validate manifest.json"},"_npmUser":{"name":"avantguardllc","email":"appadmin@avantguard.it"},"repository":{"url":"git+https://github.com/wyre-technology/ninjaone-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"NinjaOne MCP server with decision tree architecture for Claude","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@modelcontextprotocol/sdk":"^1.25.3","@avantguardllc/node-ninjaone":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0","semantic-release":"^25.0.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^6.19.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^6.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ninjaone_1.5.1_1777943187928_0.046429893319130944","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"@avantguardllc/mcp-ninjaone","version":"1.5.2","keywords":["mcp","claude","ninjaone","ninja","rmm","msp","decision-tree"],"author":{"name":"Wyre Technology"},"license":"Apache-2.0","_id":"@avantguardllc/mcp-ninjaone@1.5.2","maintainers":[{"name":"avantguardllc","email":"appadmin@avantguard.it"}],"homepage":"https://github.com/wyre-technology/ninjaone-mcp#readme","bugs":{"url":"https://github.com/wyre-technology/ninjaone-mcp/issues"},"bin":{"ninjaone-mcp":"dist/index.js"},"dist":{"shasum":"44871b3f90d78b3ce1b5a632f90a7a46ac19f34b","tarball":"https://registry.npmjs.org/@avantguardllc/mcp-ninjaone/-/mcp-ninjaone-1.5.2.tgz","fileCount":107,"integrity":"sha512-WnJWRDmKZzUVNR5xVnP2hxadhNeGQZxSdyMQXGAa3aavxF6SLIDOyJ3y5XVjRLtSYwY0TnazJUi/1wIuTfWYTw==","signatures":[{"sig":"MEUCIG+w81IsVSA0Zv+BEjmnt7gUIk0u3DTxiIuIkqFbEQWhAiEAgYqUJnoKVmUUBfXuS4R7OVG9TS4iiOkapdjzu+wT+iI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":347024},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"21ebf5a846dbb91b7ea70cfca1bacba0ed5f5e11","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/index.js","pack:mcpb":"node scripts/pack-mcpb.js","typecheck":"tsc --noEmit","test:watch":"vitest","validate:mcpb":"mcpb validate manifest.json"},"_npmUser":{"name":"avantguardllc","email":"appadmin@avantguard.it"},"repository":{"url":"git+https://github.com/wyre-technology/ninjaone-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"NinjaOne MCP server with decision tree architecture for Claude","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@modelcontextprotocol/sdk":"^1.25.3","@avantguardllc/node-ninjaone":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0","semantic-release":"^25.0.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^6.19.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^6.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ninjaone_1.5.2_1777946174051_0.17293179882201892","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"@avantguardllc/mcp-ninjaone","version":"1.5.3","description":"NinjaOne MCP server with decision tree architecture for Claude","type":"module","main":"dist/index.js","types":"dist/index.d.ts","bin":{"ninjaone-mcp":"dist/index.js"},"scripts":{"build":"tsc","dev":"tsc --watch","start":"node dist/index.js","lint":"eslint src --ext .ts","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","pack:mcpb":"node scripts/pack-mcpb.js","validate:mcpb":"mcpb validate manifest.json"},"repository":{"type":"git","url":"git+https://github.com/wyre-technology/ninjaone-mcp.git"},"keywords":["mcp","claude","ninjaone","ninja","rmm","msp","decision-tree"],"author":{"name":"Wyre Technology"},"license":"Apache-2.0","bugs":{"url":"https://github.com/wyre-technology/ninjaone-mcp/issues"},"homepage":"https://github.com/wyre-technology/ninjaone-mcp#readme","dependencies":{"@modelcontextprotocol/sdk":"^1.25.3","@avantguardllc/node-ninjaone":"^1.0.0"},"devDependencies":{"@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^11.0.0","@types/node":"^20.11.0","@typescript-eslint/eslint-plugin":"^6.19.0","@typescript-eslint/parser":"^6.19.0","eslint":"^8.56.0","semantic-release":"^25.0.0","typescript":"^5.3.3","vitest":"^1.2.0"},"engines":{"node":">=20.0.0"},"_id":"@avantguardllc/mcp-ninjaone@1.5.3","gitHead":"9dca50a63329914aed98bf48e35b32d8608fe06e","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-hfE9bLFfOpDwDOukI7VlliVM5UOagWhUpmZAwSk4nWkvb6Jhz4+fFXqW4SyjVmOtmoXNs6sWmnHK0DREs9cedA==","shasum":"4d62e3ca94887fc544abc213e3c267ced7caeb14","tarball":"https://registry.npmjs.org/@avantguardllc/mcp-ninjaone/-/mcp-ninjaone-1.5.3.tgz","fileCount":107,"unpackedSize":349247,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDKP37d2wgbIAEZ+VrEMFbYdeYKIqMaRq14zL5QZfYVFAIhAK59N61yT/AzFPWITlGTZpeMgbkL2mqUguelcrbrVvdx"}]},"_npmUser":{"name":"avantguardllc","email":"appadmin@avantguard.it"},"directories":{},"maintainers":[{"name":"avantguardllc","email":"appadmin@avantguard.it"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-ninjaone_1.5.3_1777946994013_0.255044836479563"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-04T18:53:05.097Z","modified":"2026-05-05T02:09:54.313Z","1.4.3":"2026-05-04T18:53:05.338Z","1.5.0":"2026-05-05T00:37:12.951Z","1.5.1":"2026-05-05T01:06:28.085Z","1.5.2":"2026-05-05T01:56:14.198Z","1.5.3":"2026-05-05T02:09:54.214Z"},"bugs":{"url":"https://github.com/wyre-technology/ninjaone-mcp/issues"},"author":{"name":"Wyre Technology"},"license":"Apache-2.0","homepage":"https://github.com/wyre-technology/ninjaone-mcp#readme","keywords":["mcp","claude","ninjaone","ninja","rmm","msp","decision-tree"],"repository":{"type":"git","url":"git+https://github.com/wyre-technology/ninjaone-mcp.git"},"description":"NinjaOne MCP server with decision tree architecture for Claude","maintainers":[{"name":"avantguardllc","email":"appadmin@avantguard.it"}],"readme":"# NinjaOne MCP Server\n\nA Model Context Protocol (MCP) server for interacting with NinjaOne, featuring a decision tree architecture for efficient tool loading.\n\n\n## One-Click Deployment\n\n[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/wyre-technology/ninjaone-mcp/tree/main)\n\n[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/wyre-technology/ninjaone-mcp)\n\n## Architecture\n\nThis MCP server uses a **hierarchical tool loading approach** instead of exposing all tools upfront:\n\n1. **Navigation Phase**: Initially exposes only a navigation tool (`ninjaone_navigate`)\n2. **Domain Selection**: User selects a domain (devices, organizations, alerts, tickets)\n3. **Domain Tools**: Server exposes domain-specific tools after selection\n4. **Lazy Loading**: Domain handlers and the NinjaOne client are loaded on-demand\n\nThis architecture provides:\n- Reduced cognitive load (fewer tools to choose from)\n- Faster initial load times\n- Better organization of related operations\n- Clear navigation state\n\n## Installation\n\n```bash\nnpm install @wyre-technology/ninjaone-mcp\n```\n\n## Configuration\n\nSet the following environment variables:\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `NINJAONE_CLIENT_ID` | Yes | OAuth 2.0 Client ID |\n| `NINJAONE_CLIENT_SECRET` | Yes | OAuth 2.0 Client Secret |\n| `NINJAONE_REGION` | No | Region: `us` (default), `eu`, or `oc` |\n\n### NinjaOne API Regions\n\n| Region | Base URL |\n|--------|----------|\n| `us` | `https://app.ninjarmm.com` |\n| `eu` | `https://eu.ninjarmm.com` |\n| `oc` | `https://oc.ninjarmm.com` |\n\n## Usage\n\n### Running Standalone\n\n```bash\n# Set credentials\nexport NINJAONE_CLIENT_ID=\"your-client-id\"\nexport NINJAONE_CLIENT_SECRET=\"your-client-secret\"\nexport NINJAONE_REGION=\"us\"\n\n# Run the server\nnpx @wyre-technology/ninjaone-mcp\n```\n\n### Claude Desktop Configuration\n\nAdd to your Claude Desktop `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"ninjaone\": {\n      \"command\": \"npx\",\n      \"args\": [\"@wyre-technology/ninjaone-mcp\"],\n      \"env\": {\n        \"NINJAONE_CLIENT_ID\": \"your-client-id\",\n        \"NINJAONE_CLIENT_SECRET\": \"your-client-secret\",\n        \"NINJAONE_REGION\": \"us\"\n      }\n    }\n  }\n}\n```\n\n### Docker\n\n```bash\ndocker build -t ninjaone-mcp .\ndocker run -e NINJAONE_CLIENT_ID=xxx -e NINJAONE_CLIENT_SECRET=xxx -e NINJAONE_REGION=us ninjaone-mcp\n```\n\n## Available Domains\n\n### Devices\nManage endpoints, reboot devices, view services and alerts.\n\nTools:\n- `ninjaone_devices_list` - List devices with filters\n- `ninjaone_devices_get` - Get device details\n- `ninjaone_devices_reboot` - Schedule a device reboot\n- `ninjaone_devices_services` - List Windows services on a device\n- `ninjaone_devices_alerts` - Get device-specific alerts\n- `ninjaone_devices_activities` - View device activity log\n\n### Organizations\nManage customer organizations and their resources.\n\nTools:\n- `ninjaone_organizations_list` - List organizations\n- `ninjaone_organizations_get` - Get organization details\n- `ninjaone_organizations_create` - Create a new organization\n- `ninjaone_organizations_locations` - List organization locations\n- `ninjaone_organizations_devices` - List devices for an organization\n\n### Alerts\nView and manage alerts across all devices.\n\nTools:\n- `ninjaone_alerts_list` - List alerts with filters\n- `ninjaone_alerts_reset` - Reset/dismiss a single alert\n- `ninjaone_alerts_reset_all` - Reset all alerts for a device or organization\n- `ninjaone_alerts_summary` - Get alert count summary\n\n### Tickets\nManage service tickets.\n\nTools:\n- `ninjaone_tickets_list` - List tickets with filters\n- `ninjaone_tickets_get` - Get ticket details\n- `ninjaone_tickets_create` - Create a new ticket\n- `ninjaone_tickets_update` - Update an existing ticket\n- `ninjaone_tickets_add_comment` - Add a comment to a ticket\n- `ninjaone_tickets_comments` - Get ticket comments\n\n## Navigation Tools\n\nAlways available:\n- `ninjaone_navigate` - Select a domain to work with\n- `ninjaone_status` - Show current state and credential status\n- `ninjaone_back` - Return to main menu (when in a domain)\n\n## Example Workflow\n\n```\nUser: Check my devices\nClaude: [calls ninjaone_navigate with domain=\"devices\"]\n       -> Navigated to devices domain. Available tools: ...\n\nUser: List all Windows servers\nClaude: [calls ninjaone_devices_list with device_class=\"WINDOWS_SERVER\"]\n       -> [device list results]\n\nUser: Now show me alerts\nClaude: [calls ninjaone_back]\n       -> Navigated back to main menu.\n       [calls ninjaone_navigate with domain=\"alerts\"]\n       -> Navigated to alerts domain.\n```\n\n## Authentication\n\nNinjaOne uses OAuth 2.0 for authentication. You need to:\n\n1. Log in to your NinjaOne dashboard\n2. Go to Administration > Apps > API\n3. Create a new API application\n4. Note the Client ID and Client Secret\n5. Configure the environment variables\n\nThe client library handles token refresh automatically.\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}