{"id":44882027,"url":"https://github.com/wyre-technology/ninjaone-mcp","last_synced_at":"2026-05-19T00:09:03.669Z","repository":{"id":337698545,"uuid":"1150731854","full_name":"wyre-technology/ninjaone-mcp","owner":"wyre-technology","description":"MCP server for NinjaOne — device monitoring, patching, scripting, and alert management tools for AI assistants","archived":false,"fork":false,"pushed_at":"2026-04-21T03:41:07.000Z","size":195,"stargazers_count":5,"open_issues_count":0,"forks_count":5,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-21T05:33:29.406Z","etag":null,"topics":["ai-tools","claude","mcp","mcp-server","model-context-protocol","msp","ninjaone","typescript","wyre-technology"],"latest_commit_sha":null,"homepage":"https://mcp.wyretechnology.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wyre-technology.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-05T16:15:59.000Z","updated_at":"2026-04-21T03:38:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/wyre-technology/ninjaone-mcp","commit_stats":null,"previous_names":["wyre-technology/ninjaone-mcp"],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/wyre-technology/ninjaone-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wyre-technology%2Fninjaone-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wyre-technology%2Fninjaone-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wyre-technology%2Fninjaone-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wyre-technology%2Fninjaone-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wyre-technology","download_url":"https://codeload.github.com/wyre-technology/ninjaone-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wyre-technology%2Fninjaone-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32407273,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"online","status_checked_at":"2026-04-29T02:00:06.602Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-tools","claude","mcp","mcp-server","model-context-protocol","msp","ninjaone","typescript","wyre-technology"],"created_at":"2026-02-17T16:12:28.411Z","updated_at":"2026-04-29T02:14:46.641Z","avatar_url":"https://github.com/wyre-technology.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"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       -\u003e Navigated to devices domain. Available tools: ...\n\nUser: List all Windows servers\nClaude: [calls ninjaone_devices_list with device_class=\"WINDOWS_SERVER\"]\n       -\u003e [device list results]\n\nUser: Now show me alerts\nClaude: [calls ninjaone_back]\n       -\u003e Navigated back to main menu.\n       [calls ninjaone_navigate with domain=\"alerts\"]\n       -\u003e 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 \u003e Apps \u003e 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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwyre-technology%2Fninjaone-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwyre-technology%2Fninjaone-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwyre-technology%2Fninjaone-mcp/lists"}