{"_id":"@adamhancock/ninjarmm-mcp","_rev":"3-1f205d8adb2c94ad39c2c4f24583cc12","name":"@adamhancock/ninjarmm-mcp","dist-tags":{"latest":"0.1.11"},"versions":{"0.1.0":{"name":"@adamhancock/ninjarmm-mcp","version":"0.1.0","keywords":["mcp","ninjaone","ninjarmm","rmm","monitoring"],"author":{"name":"Adam Hancock"},"license":"MIT","_id":"@adamhancock/ninjarmm-mcp@0.1.0","maintainers":[{"name":"adam1571","email":"adammhancock@gmail.com"}],"bin":{"ninjarmm-mcp":"dist/index.js"},"dist":{"shasum":"d15e48dbf1be5b7c8bb3b1435b80e792b1c7799c","tarball":"https://registry.npmjs.org/@adamhancock/ninjarmm-mcp/-/ninjarmm-mcp-0.1.0.tgz","fileCount":12,"integrity":"sha512-kX4TE1j29jWrXYhUFFCq/NTFs0IW6tUhCT6ENnbPHANzbBqgOkIeRKtvYcRmdkLZw4L/HGe+oAxK7IuXrEWjvQ==","signatures":[{"sig":"MEUCIQCvP5o+MP0ZXstgg6cJdG6xbWQUUQ6iU6BiRK20pUw7/gIgOXuYTPmAy2LPPGXzFB+Wra7DGD1frOVuwWaSty0/ekw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61518},"main":"dist/index.js","type":"module","_from":"file:adamhancock-ninjarmm-mcp-0.1.0.tgz","types":"./dist/index.d.ts","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","inspector":"npx @modelcontextprotocol/inspector tsx --env-file=.env src/index.ts"},"_npmUser":{"name":"adam1571","email":"adammhancock@gmail.com"},"_resolved":"/tmp/06ac29dfff521c5b744a7e8f6f156dc0/adamhancock-ninjarmm-mcp-0.1.0.tgz","_integrity":"sha512-kX4TE1j29jWrXYhUFFCq/NTFs0IW6tUhCT6ENnbPHANzbBqgOkIeRKtvYcRmdkLZw4L/HGe+oAxK7IuXrEWjvQ==","_npmVersion":"10.9.3","description":"MCP server for NinjaOne RMM API integration","directories":{},"_nodeVersion":"22.18.0","dependencies":{"@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","typescript":"^5.7.2","@types/node":"^22.10.5"},"_npmOperationalInternal":{"tmp":"tmp/ninjarmm-mcp_0.1.0_1756479231167_0.08964283070808965","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@adamhancock/ninjarmm-mcp","version":"0.1.10","keywords":["mcp","ninjaone","ninjarmm","rmm","monitoring"],"author":{"name":"Adam Hancock"},"license":"MIT","_id":"@adamhancock/ninjarmm-mcp@0.1.10","maintainers":[{"name":"adam1571","email":"adammhancock@gmail.com"}],"bin":{"ninjarmm-mcp":"dist/index.js"},"dist":{"shasum":"7763f6cbf90e8953477f858c5233f4161d5b3ce3","tarball":"https://registry.npmjs.org/@adamhancock/ninjarmm-mcp/-/ninjarmm-mcp-0.1.10.tgz","fileCount":12,"integrity":"sha512-YOm50GGbarh6SlvY3bLyZi5FLYuAq9bY7ur6cU9CwEbtuiopD/GDH1DRUF6B5nK8/EKLgAVFALF78Sm0G+xn/w==","signatures":[{"sig":"MEQCIDHoXVdq/MkgTEgGMP3dtpWjsBGrb3nTRIVog+/5VmhhAiBpkrSzRm9aOw//NzkAo0hCbIjwBukMYQDVmeyvmf/kVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61519},"main":"dist/index.js","type":"module","_from":"file:adamhancock-ninjarmm-mcp-0.1.10.tgz","types":"./dist/index.d.ts","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","inspector":"npx @modelcontextprotocol/inspector tsx --env-file=.env src/index.ts"},"_npmUser":{"name":"adam1571","email":"adammhancock@gmail.com"},"_resolved":"/tmp/69f4a0551f59e101dc6caacddaa28a57/adamhancock-ninjarmm-mcp-0.1.10.tgz","_integrity":"sha512-YOm50GGbarh6SlvY3bLyZi5FLYuAq9bY7ur6cU9CwEbtuiopD/GDH1DRUF6B5nK8/EKLgAVFALF78Sm0G+xn/w==","_npmVersion":"10.9.3","description":"MCP server for NinjaOne RMM API integration","directories":{},"_nodeVersion":"22.18.0","dependencies":{"@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","typescript":"^5.7.2","@types/node":"^22.10.5"},"_npmOperationalInternal":{"tmp":"tmp/ninjarmm-mcp_0.1.10_1756480344998_0.574170446578163","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@adamhancock/ninjarmm-mcp","version":"0.1.11","description":"MCP server for NinjaOne RMM API integration","main":"dist/index.js","type":"module","bin":{"ninjarmm-mcp":"dist/index.js"},"keywords":["mcp","ninjaone","ninjarmm","rmm","monitoring"],"author":{"name":"Adam Hancock"},"license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"^1.0.4"},"devDependencies":{"@types/node":"^22.10.5","tsx":"^4.20.0","typescript":"^5.7.2"},"scripts":{"build":"tsc","dev":"tsx src/index.ts","start":"node dist/index.js","inspector":"npx @modelcontextprotocol/inspector tsx --env-file=.env src/index.ts"},"_id":"@adamhancock/ninjarmm-mcp@0.1.11","types":"./dist/index.d.ts","_integrity":"sha512-jZN5Ql5IgVaJKp+S6u6RpwktCEjWTSaQAfdVT88gXsUDIZbzJl8WqCZAUeU1L84gz3+MNGt1Y0lsdlWqhFcYLg==","_resolved":"/tmp/7f78854d587831f915be26c2dc8bedd4/adamhancock-ninjarmm-mcp-0.1.11.tgz","_from":"file:adamhancock-ninjarmm-mcp-0.1.11.tgz","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-jZN5Ql5IgVaJKp+S6u6RpwktCEjWTSaQAfdVT88gXsUDIZbzJl8WqCZAUeU1L84gz3+MNGt1Y0lsdlWqhFcYLg==","shasum":"b49c7a9ec16af200ccacb66fdcd7d0b7862b4664","tarball":"https://registry.npmjs.org/@adamhancock/ninjarmm-mcp/-/ninjarmm-mcp-0.1.11.tgz","fileCount":12,"unpackedSize":86203,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDKr6oBOE6mgUSBXmFqNRYOesTQGiwhAOcI80bPx1+JYAIgBUNnEyiYBLN0q9ItSwu4l3WmFnPUYoC9BrfK0XmpsjM="}]},"_npmUser":{"name":"adam1571","email":"adammhancock@gmail.com"},"directories":{},"maintainers":[{"name":"adam1571","email":"adammhancock@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ninjarmm-mcp_0.1.11_1756483789303_0.902691175404698"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-29T14:53:51.108Z","modified":"2025-08-29T16:09:49.667Z","0.1.0":"2025-08-29T14:53:51.360Z","0.1.10":"2025-08-29T15:12:25.164Z","0.1.11":"2025-08-29T16:09:49.480Z"},"author":{"name":"Adam Hancock"},"license":"MIT","keywords":["mcp","ninjaone","ninjarmm","rmm","monitoring"],"description":"MCP server for NinjaOne RMM API integration","maintainers":[{"name":"adam1571","email":"adammhancock@gmail.com"}],"readme":"# NinjaRMM MCP Server\n\nAn MCP (Model Context Protocol) server that provides access to NinjaOne's RMM API, allowing AI assistants to monitor and manage devices, alerts, policies, and more through natural language interactions.\n\n## Features\n\n- 🔐 Secure OAuth2 authentication with NinjaOne API\n- 🖥️ Complete device monitoring and management\n- 🚨 Real-time alert monitoring and reset capabilities\n- 📋 Policy and configuration management\n- 📊 Software inventory tracking across organizations\n- 🤖 AI-friendly natural language interactions\n\n## Installation\n\n### NPM\n\nInstall the package from npm:\n\n```bash\nnpm install -g @adamhancock/ninjarmm-mcp\n```\n\n### Docker\n\nPull and run the Docker image:\n\n```bash\ndocker run -e NINJAONE_CLIENT_ID=your-client-id \\\n  -e NINJAONE_CLIENT_SECRET=your-client-secret \\\n  -e NINJAONE_REGION=us \\\n  -e NINJAONE_SCOPE=monitoring \\\n  ghcr.io/adamhancock/ninjarmm-mcp:latest\n```\n\n## Usage with Claude Desktop\n\n### Using NPM Package\n\nAdd to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"ninjarmm\": {\n      \"command\": \"npx\",\n      \"args\": [\"@adamhancock/ninjarmm-mcp\"],\n      \"env\": {\n        \"NINJAONE_CLIENT_ID\": \"your-client-id\",\n        \"NINJAONE_CLIENT_SECRET\": \"your-client-secret\",\n        \"NINJAONE_REGION\": \"us\",\n        \"NINJAONE_SCOPE\": \"monitoring\"\n      }\n    }\n  }\n}\n```\n\n### Using Docker\n\nAdd to your Claude Desktop configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"ninjarmm\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\",\n        \"--rm\",\n        \"-i\",\n        \"-e\", \"NINJAONE_CLIENT_ID=your-client-id\",\n        \"-e\", \"NINJAONE_CLIENT_SECRET=your-client-secret\",\n        \"-e\", \"NINJAONE_REGION=us\",\n        \"-e\", \"NINJAONE_SCOPE=monitoring\",\n        \"ghcr.io/adamhancock/ninjarmm-mcp:latest\"\n      ]\n    }\n  }\n}\n```\n\n## Available Tools\n\n### `ninjaone_get_organizations`\n\nList all organizations:\n\n```typescript\n{\n  pageSize: 25,  // Optional: number of results per page\n  after: \"cursor\"  // Optional: pagination cursor\n}\n```\n\n### `ninjaone_get_devices`\n\nList all devices with optional filtering:\n\n```typescript\n{\n  pageSize: 25,  // Optional: number of results per page\n  after: \"cursor\",  // Optional: pagination cursor\n  df: \"status:online\"  // Optional: device filter query\n}\n```\n\n### `ninjaone_get_device`\n\nGet detailed information about a specific device:\n\n```typescript\n{\n  id: 12345  // Device ID\n}\n```\n\n### `ninjaone_get_alerts`\n\nGet current alerts with optional filtering:\n\n```typescript\n{\n  status: \"OPEN\",  // Optional: alert status filter\n  since: \"2024-01-01T00:00:00Z\"  // Optional: get alerts since this date\n}\n```\n\n### `ninjaone_reset_alert`\n\nReset a specific alert:\n\n```typescript\n{\n  uid: \"alert-uid-123\"  // Alert UID\n}\n```\n\n### `ninjaone_get_device_software`\n\nGet installed software for a device:\n\n```typescript\n{\n  deviceId: 12345  // Device ID\n}\n```\n\n### `ninjaone_get_policies`\n\nList all policies:\n\n```typescript\n{\n  // No parameters required\n}\n```\n\n### `ninjaone_run_script`\n\nExecute a script on a device:\n\n```typescript\n{\n  deviceId: 12345,  // Device ID\n  scriptId: 67890,  // Script ID\n  parameters: { \"param1\": \"value1\" }  // Optional: script parameters\n}\n```\n\n### `ninjaone_api_call`\n\nMake authenticated calls to any NinjaOne API endpoint:\n\n```typescript\n{\n  path: \"/v2/devices\",  // API endpoint path\n  method: \"GET\",  // Optional: HTTP method (default: GET)\n  body: { \"key\": \"value\" },  // Optional: request body for POST/PUT/PATCH\n  queryParams: { \"filter\": \"status:online\" }  // Optional: query parameters\n}\n```\n\n## Common Use Cases\n\n### Monitor Device Status\n\n```\n\"Show me all offline devices\"\n\"Get alerts from the last 24 hours\"\n\"Which devices need updates?\"\n```\n\n### Software Management\n\n```\n\"What software is installed on device 12345?\"\n\"Show me the software inventory for organization 456\"\n\"Find devices with outdated Chrome versions\"\n```\n\n### Alert Management\n\n```\n\"Show me all critical alerts\"\n\"Reset alert with UID abc-123\"\n\"What devices have disk space alerts?\"\n```\n\n## Development\n\n### Run in Development Mode\n\n```bash\npnpm run dev\n```\n\n### Test Connection\n\n```bash\nnode dist/index.js\n```\n\n## Getting NinjaOne API Credentials\n\n1. Log into your NinjaOne dashboard\n2. Go to **Administration** → **Apps** → **API**\n3. Click **Add** to create a new API application\n4. Select the appropriate scopes:\n   - `monitoring`: Read-only access to monitoring data\n   - `management`: Device management capabilities\n   - `control`: Full control capabilities\n5. Copy the **Client ID** and **Client Secret**\n\n## Supported Regions\n\n- `us`: United States (https://api.ninjarmm.com) - Default\n- `eu`: Europe (https://eu.ninjarmm.com)\n- `ca`: Canada (https://ca.ninjarmm.com)\n- `oc`: Oceania (https://oc.ninjarmm.com)\n- `app`: App region (https://app.ninjarmm.com)\n\n## Security Notes\n\n- Never commit `.env` files\n- Store credentials securely\n- Use read-only scopes when possible\n- Rotate API keys regularly\n\n## License\n\nMIT","readmeFilename":"README.md"}