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 プローブです。
アーキテクチャ
この 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
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