NinjaOne MCP Server
NinjaOne MCP Server
Сервер Model Context Protocol (MCP) для взаимодействия с NinjaOne, использующий архитектуру дерева решений для эффективной загрузки инструментов.
Развертывание в один клик
[!IMPORTANT] Перед нажатием: этот сервер зависит от
@wyre-technology/node-ninjaone, который размещается в npm-реестре GitHub Packages. У GitHub Packages нет анонимного доступа — даже если пакет публичный, каждыйnpm installтребует токен. Облачный сборщик выполняетnpm installза вас, поэтому вы должны предоставить его, иначе сборка завершится с ошибкойnpm error 401 Unauthorized ... npm.pkg.github.com.
Создайте Personal Access Token GitHub с областью
read:packages(классический токен). Подойдет любой аккаунт GitHub — вам не нужно быть участником организацииwyre-technology, чтобы читать её публичные пакеты.Добавьте его как переменную сборки, когда развертывание запросит:
Cloudflare Workers → установите переменную сборки с именем
NODE_AUTH_TOKENравной вашему PAT (Workers → Settings → Build → Variables and Secrets).DigitalOcean App Platform → установите зашифрованную переменную окружения с именем
GITHUB_TOKENс областью Build Time равной вашему PAT (в.do/app.yamlона уже объявлена).
[!NOTE] Обе цели запускают полный MCP-сервер. DigitalOcean собирает Docker-образ и обслуживает его по HTTP; Cloudflare Workers обслуживает тот же сервер через Web Standard Streamable HTTP транспорт SDK (
src/worker.ts). После развертывания задайте свои учетные данные NinjaOne как секреты —NINJAONE_CLIENT_ID,NINJAONE_CLIENT_SECRETи, при необходимости,NINJAONE_REGION— или установитеAUTH_MODE=gateway, чтобы принимать учетные данные в каждом запросе из заголовковX-Ninja-*. Конечная точка MCP —/mcp;/health— это неаутентифицированный зонд готовности.
Related MCP server: ninjaone-mcp
Архитектура
Этот MCP-сервер использует иерархический подход к загрузке инструментов вместо того, чтобы показывать все инструменты сразу:
Фаза навигации: изначально доступен только навигационный инструмент (
ninjaone_navigate)Выбор домена: пользователь выбирает домен (устройства, организации, оповещения, тикеты)
Инструменты домена: сервер предоставляет инструменты, специфичные для домена, после выбора
Ленивая загрузка: обработчики доменов и клиент NinjaOne загружаются по требованию
Эта архитектура обеспечивает:
Снижение когнитивной нагрузки (меньше инструментов на выбор)
Более быструю начальную загрузку
Лучшую организацию связанных операций
Четкое состояние навигации
Установка
Этот пакет публикуется в npm-реестр GitHub Packages, который требует токен даже для публичных пакетов. Аутентифицируйтесь один раз, затем установите:
# 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-mcp.npmrc в репозитории уже указывает область @wyre-technology на GitHub Packages и
читает токен из NODE_AUTH_TOKEN, поэтому дополнительная настройка не требуется. То же самое относится
и к npx @wyre-technology/ninjaone-mcp ниже. Предпочитаете вариант без настройки? Используйте предварительно собранный
контейнерный образ (ghcr.io/wyre-technology/ninjaone-mcp) или пакет .mcpb, прикрепленный к
каждому релизу.
Конфигурация
Задайте следующие переменные окружения:
Переменная | Обязательная | Описание |
| Да | OAuth 2.0 Client ID |
| Да | OAuth 2.0 Client Secret |
| Нет | Регион: |
| Нет | Запрашиваемые области OAuth. По умолчанию |
Регионы API NinjaOne
Регион | Базовый URL |
|
|
|
|
|
|
|
|
|
|
|
|
Использование
Запуск в автономном режиме
# 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-mcpКонфигурация Claude Desktop
Добавьте в ваш claude_desktop_config.json для 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-mcpДоступные домены
Устройства
Управление конечными точками, перезагрузка устройств, просмотр служб и оповещений.
Инструменты:
ninjaone_devices_list— список устройств с фильтрацией по организации, классу устройства и статусу онлайн. Пагинация: полная страница возвращаетhasMore: trueиcursorдля передачи на следующую страницу.ninjaone_devices_get— получить сведения об устройствеninjaone_devices_reboot— запланировать перезагрузку устройстваninjaone_devices_services— список служб Windows на устройствеninjaone_devices_alerts— получить оповещения, специфичные для устройстваninjaone_devices_activities— просмотр журнала активности устройства
Организации
Управление организациями клиентов и их ресурсами.
Инструменты:
ninjaone_organizations_list— список организацийninjaone_organizations_get— получить сведения об организацииninjaone_organizations_create— создать новую организациюninjaone_organizations_locations— список местоположений организацииninjaone_organizations_devices— список устройств для организации
Оповещения
Просмотр и управление оповещениями на всех устройствах.
Инструменты:
ninjaone_alerts_list— список оповещений с фильтрамиninjaone_alerts_get— получить одно оповещение по UID (отображается как интерактивная карточка в хостах MCP Apps)ninjaone_alerts_reset— сбросить/отклонить одно оповещениеninjaone_alerts_reset_all— сбросить все оповещения для устройства или организацииninjaone_alerts_summary— получить сводку по количеству оповещений
Возможности:
Интерактивная карточка оповещения (MCP Apps, SEP-1865):
ninjaone_alerts_getотображается как интерактивная карточка в хостах MCP Apps (Claude Desktop/web) с циклом «Сбросить оповещение» внутри карточки черезninjaone_alerts_reset; нейтральная по умолчанию, настраиваемая через инъекциюwindow.__BRAND__или переменные окруженияMCP_BRAND_*; поведение с обычным JSON не изменяется в других хостах
Тикеты
Управление сервисными тикетами.
Инструменты:
ninjaone_tickets_list— список тикетов с доски (требуетсяboard_id; фильтрыstatus/organization_id/device_idприменяются на стороне клиента, см. примечания ниже)ninjaone_tickets_get— получить сведения о тикетеninjaone_tickets_create— создать новый тикетninjaone_tickets_update— обновить существующий тикетninjaone_tickets_add_comment— добавить комментарий к тикетуninjaone_tickets_comments— получить комментарии к тикетуninjaone_tickets_boards_list— список досок тикетов (для обнаружения значенийboard_id)
Примечание: NinjaOne запрашивает тикеты по доскам, и идентификаторы досок различаются в зависимости от тенанта — доска 1 не всегда является доской «Все тикеты», поэтому
ninjaone_tickets_listтребует явныйboard_id, а не молча угадывает его. Узнайте идентификаторы с помощьюninjaone_tickets_boards_list; в тенантах, где эта конечная точка возвращает 404, прочитайте числовой идентификатор из URL ссылки на доску в веб-интерфейсе NinjaOne (например, ссылка «Все тикеты» на боковой панели).Примечание: API досок NinjaOne не может фильтровать тикеты по статусу, организации или устройству на стороне сервера (попытка вызывает общую ошибку
Bad request). Поэтомуninjaone_tickets_listприменяет эти фильтры на стороне клиента в пределах одной страницы доски. Ответ разделяетcount(совпадения на этой странице) иscanned(просмотренные тикеты) и включаетhasMore/cursor— листайте страницы, покаhasMoreне станетfalse, чтобы получить все совпадения, и никогда не считайтеcountодной страницы общим количеством по доске. Статус сопоставляется с отображаемым именем статуса каждого тикета, поэтому пользовательские статусы досок могут не соответствовать значениямOPEN/IN_PROGRESS/WAITING/CLOSED.Аналогично,
ninjaone_devices_listфильтрует поorganization_idчерез специальную конечную точку NinjaOne для каждой организации (общий фильтр устройствdf=orgненадежен и может молча возвращать весь парк устройств).
Навигационные инструменты
Всегда доступны:
ninjaone_navigate— выбрать домен для работыninjaone_status— показать текущее состояние и статус учетных данныхninjaone_back— вернуться в главное меню (когда находитесь в домене)
Пример рабочего процесса
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.Аутентификация
NinjaOne использует OAuth 2.0 для аутентификации. Вам необходимо:
Войти в панель управления NinjaOne
Перейти в Administration > Apps > API
Создать новое API-приложение (платформа приложения: API Services, тип предоставления Client Credentials)
Предоставить ему необходимые области — см. ниже
Записать Client ID и Client Secret
Настроить переменные окружения
Клиентская библиотека автоматически обрабатывает обновление токена.
Области OAuth
По умолчанию сервер запрашивает monitoring management. Какие области вам
фактически нужны, зависит от того, что вы используете:
Область | Необходимо для |
| Все операции чтения — список устройств, организаций, оповещений и тикетов |
| Операции записи — перезагрузка устройств, сброс оповещений, создание/обновление тикетов и организаций |
| Не используется этим сервером |
Если вашему API-приложению предоставлено меньше областей, чем по умолчанию, установите NINJAONE_SCOPES
в соответствии с ними. NinjaOne отклоняет запрос токена, который запрашивает область, не предоставленную
приложению — он возвращает 400 invalid_scope вместо сужения предоставления —
поэтому сбой происходит при обмене токена, и каждый вызов инструмента завершается ошибкой, включая
чтение. Для приложения только с мониторингом:
export NINJAONE_SCOPES="monitoring"Значения могут быть разделены запятыми или пробелами и нечувствительны к регистру. В шлюзовых
развертываниях то же значение можно передавать в каждом запросе через заголовок X-Ninja-Scopes.
Лицензия
Apache-2.0
Related MCP Connectors
Manage uptime monitors and incidents and search logs, metrics and traces from an AI assistant.
Build and run agents and automations across hundreds of apps using natural language.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables Claude to manage NinjaOne RMM infrastructure, including devices, patches, ticketing, and organizations through natural language commands.MIT
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to interact with NinjaOne, providing tools for managing devices, organizations, alerts, and tickets. Uses a decision tree architecture to load domain-specific tools on demand.Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with the NinjaOne platform for managing devices, organizations, alerts, and tickets through a decision-tree tool-loading architecture.Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables managing NinjaONE RMM platforms, including devices, patches, alerts, users, policies, and backups, through natural language MCP interactions.10 npmMIT