NinjaOne MCP Server
NinjaOne MCP サーバー
NinjaOne と連携するための Model Context Protocol (MCP) サーバーです。効率的なツール読み込みを実現する決定木アーキテクチャを備えています。
ワンクリックデプロイ
[!IMPORTANT] クリックする前に: このサーバーは
@wyre-technology/node-ninjaoneに依存しており、 これは GitHub Packages の npm レジストリでホストされています。GitHub Packages には 匿名アクセスがありません — パッケージが公開されていても、すべてのnpm installには トークンが必要です。クラウドビルダーはnpm installを自動実行するため、トークンを 指定しないとビルドがnpm error 401 Unauthorized ... npm.pkg.github.comで失敗します。
read:packagesスコープを持つ GitHub Personal Access Token を作成します (classic token)。 どの 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 は SDK の Web Standard Streamable HTTP トランスポート (
src/worker.ts) を介して同じサーバーを提供します。デプロイ後、NinjaOne の認証情報をシークレットとして 設定してください —NINJAONE_CLIENT_ID、NINJAONE_CLIENT_SECRET、およびオプションでNINJAONE_REGION— またはAUTH_MODE=gatewayを設定して、X-Ninja-*ヘッダーから リクエストごとに認証情報を取得します。MCP エンドポイントは/mcpです。/healthは 認証不要の liveness プローブです。
Related MCP server: ninjaone-mcp
アーキテクチャ
この MCP サーバーは、すべてのツールを最初から公開する代わりに、階層的なツール読み込みアプローチを使用します:
ナビゲーションフェーズ: 最初はナビゲーションツール (
ninjaone_navigate) のみを公開ドメイン選択: ユーザーがドメイン (devices、organizations、alerts、tickets) を選択
ドメインツール: 選択後にドメイン固有のツールを公開
遅延読み込み: ドメインハンドラーと NinjaOne クライアントはオンデマンドで読み込まれる
このアーキテクチャの利点:
認知的負荷の軽減 (選択するツールが少ない)
初期読み込み時間の短縮
関連操作の整理が容易
明確なナビゲーション状態
インストール
このパッケージは GitHub Packages の npm レジストリに公開されており、公開パッケージでも トークンが必要です。一度認証してからインストールします:
# 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 クライアント ID |
| はい | OAuth 2.0 クライアントシークレット |
| いいえ | リージョン: |
| いいえ | 要求する OAuth スコープ。デフォルトは |
NinjaOne API リージョン
リージョン | ベース 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-mcpClaude Desktop の設定
Claude Desktop の claude_desktop_config.json に追加します:
{
"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利用可能なドメイン
Devices (デバイス)
エンドポイントの管理、デバイスの再起動、サービスとアラートの表示。
ツール:
ninjaone_devices_list- デバイスの一覧表示。組織、デバイスクラス、オンラインステータスでフィルタリング可能。ページネーション対応: 1 ページに全件が収まらない場合はhasMore: trueと次のページ用のcursorが返されます。ninjaone_devices_get- デバイスの詳細を取得ninjaone_devices_reboot- デバイスの再起動をスケジュールninjaone_devices_services- デバイス上の Windows サービスを一覧表示ninjaone_devices_alerts- デバイス固有のアラートを取得ninjaone_devices_activities- デバイスのアクティビティログを表示
Organizations (組織)
顧客組織とそのリソースを管理。
ツール:
ninjaone_organizations_list- 組織の一覧表示ninjaone_organizations_get- 組織の詳細を取得ninjaone_organizations_create- 新しい組織を作成ninjaone_organizations_locations- 組織のロケーションを一覧表示ninjaone_organizations_devices- 組織のデバイスを一覧表示
Alerts (アラート)
すべてのデバイスにわたるアラートの表示と管理。
ツール:
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 動作は変更されません。
Tickets (チケット)
サービスチケットの管理。
ツール:
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 はチケットをボード単位でクエリし、ボード ID はテナントごとに異なります — ボード 1 が常に「すべてのチケット」ボードであるとは限らないため、
ninjaone_tickets_listは暗黙的に推測するのではなく、明示的なboard_idを必要とします。ID はninjaone_tickets_boards_listで見つけてください。そのエンドポイントが 404 を返すテナントでは、 NinjaOne の Web UI のボードリンクの URL から数値 ID を読み取ってください (例: 「すべてのチケット」サイドバーリンク)。注記: NinjaOne のボード実行 API は、ステータス、組織、デバイスによるチケットの サーバー側フィルタリングができません (試行すると汎用の
Bad requestエラーが発生します)。 そのためninjaone_tickets_listはこれらのフィルターを1 つのボードページ内でクライアント側で 適用します。レスポンスはcount(このページ内の一致数) とscanned(調査したチケット数) を 分けて返し、hasMore/cursorも含みます —hasMoreがfalseになるまでページをめくって すべての一致を取得してください。単一ページのcountをボード全体の合計として扱わないでください。 ステータスは各チケットのステータス表示名と照合されるため、カスタムボードステータスはOPEN/IN_PROGRESS/WAITING/CLOSEDの値にマップされない場合があります。同様に、
ninjaone_devices_listは NinjaOne の専用の組織別エンドポイントを通じてorganization_idでフィルタリングします (一般的な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 tickets, run agents and workflows, query tables, and search workspace knowledge.
Manage uptime monitors and incidents and search logs, metrics and traces from an AI assistant.
Enables AI assistants to retrieve event data and execute event management operations in Nunify.
Build and run agents and automations across hundreds of apps using natural language.
Related MCP Servers
- AlicenseCqualityBmaintenanceEnables Claude to manage NinjaOne RMM infrastructure, including devices, patches, ticketing, and organizations through natural language commands.21MIT
- 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.20 npmMIT