NinjaOne MCP Server
NinjaOne MCP Server
Un servidor de Model Context Protocol (MCP) para interactuar con NinjaOne, con una arquitectura de árbol de decisión para una carga eficiente de herramientas.
Despliegue con un clic
[!IMPORTANT] Antes de hacer clic: este servidor depende de
@wyre-technology/node-ninjaone, que está alojado en el registro npm de GitHub Packages. GitHub Packages no tiene acceso anónimo: aunque el paquete sea público, cadanpm installnecesita un token. El constructor en la nube ejecutanpm installpor ti, así que debes proporcionarle uno, o la compilación fallará connpm error 401 Unauthorized ... npm.pkg.github.com.
Crea un Personal Access Token de GitHub con el ámbito
read:packages(token clásico). Cualquier cuenta de GitHub sirve: no necesitas ser miembro de la organizaciónwyre-technologypara leer sus paquetes públicos.Añádelo como variable de compilación cuando el flujo de despliegue lo solicite:
Cloudflare Workers → establece una variable de compilación llamada
NODE_AUTH_TOKENcon tu PAT (Workers → Settings → Build → Variables and Secrets).DigitalOcean App Platform → establece una variable de entorno cifrada llamada
GITHUB_TOKENcon ámbito Build Time con tu PAT (el.do/app.yamlya lo declara).
[!NOTE] Ambos destinos ejecutan el servidor MCP completo. DigitalOcean construye la imagen Docker y la sirve por HTTP; Cloudflare Workers sirve el mismo servidor mediante el transporte HTTP Streamable Web Standard del SDK (
src/worker.ts). Después de desplegar, establece tus credenciales de NinjaOne como secretos —NINJAONE_CLIENT_ID,NINJAONE_CLIENT_SECRET, y opcionalmenteNINJAONE_REGION— o estableceAUTH_MODE=gatewaypara tomar credenciales por solicitud de los encabezadosX-Ninja-*. El endpoint MCP es/mcp;/healthes una sonda de actividad sin autenticación.
Arquitectura
Este servidor MCP utiliza un enfoque de carga jerárquica de herramientas en lugar de exponer todas las herramientas de antemano:
Fase de navegación: Inicialmente expone solo una herramienta de navegación (
ninjaone_navigate)Selección de dominio: El usuario selecciona un dominio (dispositivos, organizaciones, alertas, tickets)
Herramientas de dominio: El servidor expone herramientas específicas del dominio después de la selección
Carga diferida: Los manejadores de dominio y el cliente de NinjaOne se cargan bajo demanda
Esta arquitectura proporciona:
Carga cognitiva reducida (menos herramientas entre las que elegir)
Tiempos de carga inicial más rápidos
Mejor organización de operaciones relacionadas
Estado de navegación claro
Instalación
Este paquete se publica en el registro npm de GitHub Packages, que requiere un token incluso para paquetes públicos. Autentícate una vez y luego instala:
# Authenticate npm to GitHub Packages (token needs the read:packages scope)
export NODE_AUTH_TOKEN=$(gh auth token) # or a PAT with read:packages
npm install @wyre-technology/ninjaone-mcpEl .npmrc del repositorio ya apunta el ámbito @wyre-technology a GitHub Packages y
lee el token de NODE_AUTH_TOKEN, por lo que no se necesita configuración adicional. Lo mismo se aplica
a npx @wyre-technology/ninjaone-mcp a continuación. ¿Prefieres una opción sin configuración? Usa la imagen de contenedor precompilada (ghcr.io/wyre-technology/ninjaone-mcp) o el paquete .mcpb adjunto a cada release.
Configuración
Establece las siguientes variables de entorno:
Variable | Requerido | Descripción |
| Sí | ID de cliente OAuth 2.0 |
| Sí | Secreto de cliente OAuth 2.0 |
| No | Región: |
| No | Ámbitos OAuth a solicitar. Por defecto |
Regiones de la API de NinjaOne
Región | URL base |
|
|
|
|
|
|
|
|
|
|
|
|
Uso
Ejecución independiente
# Set credentials
export NINJAONE_CLIENT_ID="your-client-id"
export NINJAONE_CLIENT_SECRET="your-client-secret"
export NINJAONE_REGION="us"
# Run the server
npx @wyre-technology/ninjaone-mcpConfiguración de Claude Desktop
Añade a tu claude_desktop_config.json de Claude Desktop:
{
"mcpServers": {
"ninjaone": {
"command": "npx",
"args": ["@wyre-technology/ninjaone-mcp"],
"env": {
"NINJAONE_CLIENT_ID": "your-client-id",
"NINJAONE_CLIENT_SECRET": "your-client-secret",
"NINJAONE_REGION": "us"
}
}
}
}Docker
docker build -t ninjaone-mcp .
docker run -e NINJAONE_CLIENT_ID=xxx -e NINJAONE_CLIENT_SECRET=xxx -e NINJAONE_REGION=us ninjaone-mcpDominios disponibles
Dispositivos
Gestiona endpoints, reinicia dispositivos, ve servicios y alertas.
Herramientas:
ninjaone_devices_list- Lista dispositivos, filtrables por organización, clase de dispositivo y estado en línea. Paginado: una página completa devuelvehasMore: truey uncursorpara pasarlo de vuelta en la siguiente página.ninjaone_devices_get- Obtiene detalles del dispositivoninjaone_devices_reboot- Programa un reinicio del dispositivoninjaone_devices_services- Lista los servicios de Windows en un dispositivoninjaone_devices_alerts- Obtiene alertas específicas del dispositivoninjaone_devices_activities- Ve el registro de actividad del dispositivo
Organizaciones
Gestiona organizaciones de clientes y sus recursos.
Herramientas:
ninjaone_organizations_list- Lista organizacionesninjaone_organizations_get- Obtiene detalles de la organizaciónninjaone_organizations_create- Crea una nueva organizaciónninjaone_organizations_locations- Lista ubicaciones de la organizaciónninjaone_organizations_devices- Lista dispositivos de una organización
Alertas
Ve y gestiona alertas en todos los dispositivos.
Herramientas:
ninjaone_alerts_list- Lista alertas con filtrosninjaone_alerts_get- Obtiene una sola alerta por UID (se muestra como una tarjeta interactiva en los hosts de MCP Apps)ninjaone_alerts_reset- Restablece/descarta una sola alertaninjaone_alerts_reset_all- Restablece todas las alertas de un dispositivo u organizaciónninjaone_alerts_summary- Obtiene un resumen del recuento de alertas
Características:
Tarjeta de alerta interactiva (MCP Apps, SEP-1865):
ninjaone_alerts_getse muestra como una tarjeta interactiva en los hosts de MCP Apps (Claude Desktop/web) con un viaje de ida y vuelta "Restablecer alerta" dentro de la tarjeta medianteninjaone_alerts_reset; neutral por defecto, personalizable mediante la inyección dewindow.__BRAND__o las variables de entornoMCP_BRAND_*; el comportamiento JSON plano no cambia en otros hosts
Tickets
Gestiona tickets de servicio.
Herramientas:
ninjaone_tickets_list- Lista tickets de un tablero (requiereboard_id; los filtrosstatus/organization_id/device_idse aplican en el cliente, ver notas a continuación)ninjaone_tickets_get- Obtiene detalles del ticketninjaone_tickets_create- Crea un nuevo ticketninjaone_tickets_update- Actualiza un ticket existenteninjaone_tickets_add_comment- Añade un comentario a un ticketninjaone_tickets_comments- Obtiene comentarios del ticketninjaone_tickets_boards_list- Lista tableros de tickets (para descubrir valores deboard_id)
Nota: NinjaOne consulta tickets por tablero, y los IDs de tablero varían según el tenant — el tablero 1 no es siempre el tablero "Todos los tickets", por lo que
ninjaone_tickets_listrequiere unboard_idexplícito en lugar de adivinar uno silenciosamente. Descubre los IDs conninjaone_tickets_boards_list; en tenants donde ese endpoint devuelve 404, lee el ID numérico de la URL del enlace del tablero en la interfaz web de NinjaOne (por ejemplo, el enlace "Todos los tickets" en la barra lateral).Nota: La API de ejecución de tableros de NinjaOne no puede filtrar tickets por estado, organización o dispositivo en el servidor (intentarlo lanza un error genérico
Bad request). Por lo tanto,ninjaone_tickets_listaplica esos filtros en el cliente dentro de una página de tablero. La respuesta separacount(coincidencias en esta página) descanned(tickets examinados) e incluyehasMore/cursor— pagina hasta quehasMoreseafalsepara obtener todas las coincidencias, y nunca trates elcountde una sola página como un total del tablero. El estado se compara con el nombre de visualización del estado de cada ticket, por lo que los estados personalizados del tablero pueden no corresponder a los valoresOPEN/IN_PROGRESS/WAITING/CLOSED.De manera similar,
ninjaone_devices_listfiltra pororganization_idmediante el endpoint dedicado por organización de NinjaOne (el filtro general de dispositivosdf=orgno es fiable y puede devolver silenciosamente toda la flota).
Herramientas de navegación
Siempre disponibles:
ninjaone_navigate- Selecciona un dominio con el que trabajarninjaone_status- Muestra el estado actual y el estado de las credencialesninjaone_back- Vuelve al menú principal (cuando estás en un dominio)
Ejemplo de flujo de trabajo
User: Check my devices
Claude: [calls ninjaone_navigate with domain="devices"]
-> Navigated to devices domain. Available tools: ...
User: List all Windows servers
Claude: [calls ninjaone_devices_list with device_class="WINDOWS_SERVER"]
-> [device list results]
User: Now show me alerts
Claude: [calls ninjaone_back]
-> Navigated back to main menu.
[calls ninjaone_navigate with domain="alerts"]
-> Navigated to alerts domain.Autenticación
NinjaOne utiliza OAuth 2.0 para la autenticación. Necesitas:
Inicia sesión en tu panel de NinjaOne
Ve a Administración > Aplicaciones > API
Crea una nueva aplicación API (plataforma de aplicación: API Services, tipo de concesión Client Credentials)
Concédele los ámbitos que necesites — ver más abajo
Anota el Client ID y el Client Secret
Configura las variables de entorno
La biblioteca cliente maneja la renovación del token automáticamente.
Ámbitos de OAuth
Por defecto, el servidor solicita monitoring management. Los ámbitos que realmente necesitas dependen de lo que uses:
Ámbito | Necesario para |
| Todas las operaciones de lectura — listar dispositivos, organizaciones, alertas y tickets |
| Operaciones de escritura — reiniciar dispositivos, restablecer alertas, crear/actualizar tickets y organizaciones |
| No utilizado por este servidor |
Si a tu aplicación API se le conceden menos ámbitos que los predeterminados, establece NINJAONE_SCOPES
para que coincidan. NinjaOne rechaza una solicitud de token que pide un ámbito que la aplicación
nunca recibió — devuelve 400 invalid_scope en lugar de reducir la concesión —
por lo que el fallo ocurre en el intercambio de tokens y cada llamada a herramienta falla, incluidas
las lecturas. Para una aplicación solo de monitoreo:
export NINJAONE_SCOPES="monitoring"Los valores pueden estar separados por comas o espacios y no distinguen entre mayúsculas y minúsculas. En despliegues de gateway, el mismo valor se puede proporcionar por solicitud mediante el encabezado X-Ninja-Scopes.
Licencia
Apache-2.0
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
SaaS intelligence for AI agents. 5 unified tools cover 1,000+ services with 91-96% token savings.
Manage AI assistants, history, calls, campaigns, contacts, knowledge, messaging, and automations.
Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/JDelgadoCMG/ninjaone-mcp1'
If you have feedback or need assistance with the MCP directory API, please join our Discord server