プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

NinjaOne

作者:wyre-technologyバージョン 2.2.9i★ –iパソコンで動く
レジストリ名io.github.wyre-technology/ninjaone-mcp

インストール

概要

作者による説明(英語の原文)

MCP server for NinjaOne RMM — devices, organizations, alerts, and tickets.

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: その他
  • 入力が必要なもの:NINJAONE_CLIENT_ID, NINJAONE_CLIENT_SECRET

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • 自分で入力するもの: NINJAONE_CLIENT_ID, NINJAONE_CLIENT_SECRET, NINJAONE_REGION, MCP_TRANSPORT, AUTH_MODE, LOG_LEVEL

「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。

必要なもの

  • DockerDockerのインストール

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "ninjaone": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "NINJAONE_CLIENT_ID",
        "-e",
        "NINJAONE_CLIENT_SECRET",
        "-e",
        "NINJAONE_REGION",
        "-e",
        "MCP_TRANSPORT",
        "-e",
        "AUTH_MODE",
        "-e",
        "LOG_LEVEL",
        "ghcr.io/wyre-technology/ninjaone-mcp:v2.2.9"
      ],
      "env": {
        "NINJAONE_CLIENT_ID": "your-value",
        "NINJAONE_CLIENT_SECRET": "your-value",
        "NINJAONE_REGION": "your-value",
        "MCP_TRANSPORT": "your-value",
        "AUTH_MODE": "your-value",
        "LOG_LEVEL": "your-value"
      }
    }
  }
}

ターミナルでこれを実行します

claude mcp add ninjaone --env NINJAONE_CLIENT_ID=your-value --env NINJAONE_CLIENT_SECRET=your-value --env NINJAONE_REGION=your-value --env MCP_TRANSPORT=your-value --env AUTH_MODE=your-value --env LOG_LEVEL=your-value -- docker run -i --rm -e NINJAONE_CLIENT_ID -e NINJAONE_CLIENT_SECRET -e NINJAONE_REGION -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-technology/ninjaone-mcp:v2.2.9

動かす前に、空欄の値を入力してください。

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "ninjaone": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "NINJAONE_CLIENT_ID",
        "-e",
        "NINJAONE_CLIENT_SECRET",
        "-e",
        "NINJAONE_REGION",
        "-e",
        "MCP_TRANSPORT",
        "-e",
        "AUTH_MODE",
        "-e",
        "LOG_LEVEL",
        "ghcr.io/wyre-technology/ninjaone-mcp:v2.2.9"
      ],
      "env": {
        "NINJAONE_CLIENT_ID": "your-value",
        "NINJAONE_CLIENT_SECRET": "your-value",
        "NINJAONE_REGION": "your-value",
        "MCP_TRANSPORT": "your-value",
        "AUTH_MODE": "your-value",
        "LOG_LEVEL": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "ninjaone": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "NINJAONE_CLIENT_ID",
        "-e",
        "NINJAONE_CLIENT_SECRET",
        "-e",
        "NINJAONE_REGION",
        "-e",
        "MCP_TRANSPORT",
        "-e",
        "AUTH_MODE",
        "-e",
        "LOG_LEVEL",
        "ghcr.io/wyre-technology/ninjaone-mcp:v2.2.9"
      ],
      "env": {
        "NINJAONE_CLIENT_ID": "your-value",
        "NINJAONE_CLIENT_SECRET": "your-value",
        "NINJAONE_REGION": "your-value",
        "MCP_TRANSPORT": "your-value",
        "AUTH_MODE": "your-value",
        "LOG_LEVEL": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

自分で入力する値

  • NINJAONE_CLIENT_ID 必須 env
    NinjaOne OAuth 2.0 Client ID
  • NINJAONE_CLIENT_SECRET 秘密 必須 env
    NinjaOne OAuth 2.0 Client Secret
  • NINJAONE_REGION env
    NinjaOne region: 'us' (default), 'eu', or 'oc'
  • MCP_TRANSPORT env
    Transport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.
  • AUTH_MODE env
    Credential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.
  • LOG_LEVEL env
    Log verbosity: debug, info, warn, error

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント wyre-technology で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

その他のほかのサーバーとの比較i

  • このカテゴリのほかの18334件のうち0%よりスターが多い
  • このカテゴリのほかの18334件のうち28%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの18334件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

NinjaOneは安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

入力が必要なもの:NINJAONE_CLIENT_ID, NINJAONE_CLIENT_SECRET

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(2.2.9)がレジストリに届いたのは3 か月前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにDockerも必要です。

代わりに使えるものは?

同じカテゴリには:Spec Driven Development, Remote Desktop Commander, ProAgentStore

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Remote Desktop Commander

作者:desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

クラウドで動く★ 211一昨日更新
インストール

ProAgentStore

作者:ProAgentStore

MCP-first control plane for ProAgentStore agents and private instances.

クラウドで動く今日更新
インストール

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

NinjaOne MCP Server

A Model Context Protocol (MCP) server for interacting with NinjaOne, featuring a decision tree architecture for efficient tool loading.

One-Click Deployment

[!IMPORTANT]

Before you click: this server depends on @wyre-ai/node-ninjaone,

which is hosted on the GitHub Packages npm registry. GitHub Packages has no

anonymous access — even though the package is public, every npm install needs a

token. The cloud builder runs npm install for you, so you must give it one, or

the build fails with npm error 401 Unauthorized ... npm.pkg.github.com.

1. Create a GitHub Personal Access Token with the read:packages scope

(classic token).

Any GitHub account works — you do not need to be a member of the

wyre-ai org to read its public packages.

2. Add it as a build variable when prompted by the deploy flow:

- Cloudflare Workers → set a build variable named `NODE_AUTH_TOKEN` to your PAT

(Workers → Settings → Build → Variables and Secrets).

- DigitalOcean App Platform → set an encrypted env var named `GITHUB_TOKEN`

with scope Build Time to your PAT (the .do/app.yaml already declares it).

[!NOTE]

Both targets run the full MCP server. DigitalOcean builds the Docker image and

serves it over HTTP; Cloudflare Workers serves the same server via the SDK's Web

Standard Streamable HTTP transport (src/worker.ts). After deploying, set your

NinjaOne credentials as secrets — NINJAONE_CLIENT_ID, NINJAONE_CLIENT_SECRET,

and optionally NINJAONE_REGION — or set AUTH_MODE=gateway to take credentials

per-request from X-Ninja-* headers. HTTP also requires CONDUIT_S2S_SECRET

and a valid X-Gateway-S2S signature on /mcp (see HTTP authentication).

The MCP endpoint is /mcp; /health is an unauthenticated liveness probe.

Architecture

This MCP server uses a hierarchical tool loading approach instead of exposing all tools upfront:

  1. Navigation Phase: Initially exposes only a navigation tool (ninjaone_navigate)
  2. Domain Selection: User selects a domain (devices, organizations, alerts, tickets)
  3. Domain Tools: Server exposes domain-specific tools after selection
  4. Lazy Loading: Domain handlers and the NinjaOne client are loaded on-demand

This architecture provides:

  • Reduced cognitive load (fewer tools to choose from)
  • Faster initial load times
  • Better organization of related operations
  • Clear navigation state

Installation

This package is published to the GitHub Packages npm registry, which requires a token even for public packages. Authenticate once, then install:

# 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-ai/ninjaone-mcp

The repo's .npmrc already points the @wyre-ai scope at GitHub Packages and reads the token from NODE_AUTH_TOKEN, so no further config is needed. The same applies to npx @wyre-ai/ninjaone-mcp below. Prefer a zero-setup option? Use the prebuilt container image (ghcr.io/wyre-ai/ninjaone-mcp) or the .mcpb bundle attached to each release.

Configuration

Copy .env.example and set the variables below.

VariableRequiredDescription
NINJAONE_CLIENT_IDFor stdio and AUTH_MODE=envOAuth 2.0 Client ID
NINJAONE_CLIENT_SECRETFor stdio and AUTH_MODE=envOAuth 2.0 Client Secret
NINJAONE_REGIONNoRegion: us (default), eu, oc, ca, us2, or fed
NINJAONE_SCOPESNoOAuth scopes to request. Defaults to monitoring,management. Set this if your API app is granted a narrower set — see OAuth scopes
MCP_TRANSPORTNostdio (default) or http
AUTH_MODENogateway (Docker image and Compose default) or env. Gateway mode requires X-Ninja-Client-ID and X-Ninja-Client-Secret on each /mcp request and never falls back to NINJAONE_*. env uses those variables only after S2S auth succeeds.
CONDUIT_S2S_SECRETYes for HTTPService-to-service secret. The HTTP server logs an error and exits non-zero when this is empty or a known placeholder. Compose will not start without it. Never commit a real value. Generate one with openssl rand -hex 32.
MCP_ALLOW_INSECURE_DEVNoSet to exactly 1 only for local development to start HTTP without CONDUIT_S2S_SECRET. The process logs a warning, does not enforce X-Gateway-S2S, and binds 127.0.0.1 only. A known placeholder secret is still refused.
MCP_HTTP_HOSTNoBind address when MCP_TRANSPORT=http. Defaults to 127.0.0.1. Honored only when CONDUIT_S2S_SECRET is set. The container image sets 0.0.0.0.
MCP_HTTP_PORTNoHTTP port. Defaults to 8080.

/health and /healthz stay unauthenticated and do not read credentials. The stdio transport does not use CONDUIT_S2S_SECRET.

HTTP authentication

With MCP_TRANSPORT=http and CONDUIT_S2S_SECRET set, every /mcp request must include:

X-Gateway-S2S: t=<unix seconds>,v1=<hex>

v1 is HMAC-SHA256 of the ASCII string t= (the same t= prefix that is sent in the header), keyed with CONDUIT_S2S_SECRET, and hex-encoded. The timestamp must be within 300 seconds of the server clock. A missing or invalid header returns 401 before any vendor credential is read. The secret value is never written to logs.

In AUTH_MODE=gateway, /mcp also requires X-Ninja-Client-ID and X-Ninja-Client-Secret (X-Ninja-Region is optional). Those headers are the only credential source for that request. A request missing them returns 401 and does not fall back to NINJAONE_CLIENT_ID / NINJAONE_CLIENT_SECRET.

MCP_ALLOW_INSECURE_DEV=1 skips the X-Gateway-S2S check for local development and forces the listener onto 127.0.0.1. A non-loopback MCP_HTTP_HOST, including 0.0.0.0, is ignored in that mode and the override is logged.

NinjaOne API Regions
RegionBase URL
ushttps://app.ninjarmm.com
euhttps://eu.ninjarmm.com
ochttps://oc.ninjarmm.com
cahttps://ca.ninjarmm.com
us2https://us2.ninjarmm.com
fedhttps://fed.ninjarmm.com

Usage

Running Standalone
# 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-ai/ninjaone-mcp

Claude Desktop Configuration

Add to your Claude Desktop claude_desktop_config.json:

{

"mcpServers": { "ninjaone": { "command": "npx", "args": ["@wyre-ai/ninjaone-mcp"], "env": { "NINJAONE_CLIENT_ID": "your-client-id", "NINJAONE_CLIENT_SECRET": "your-client-secret", "NINJAONE_REGION": "us" } } } }

Docker

The image listens on 0.0.0.0 inside the container (MCP_HTTP_HOST) and defaults to AUTH_MODE=gateway. Publish the port on loopback and pass the S2S secret. In gateway mode, NinjaOne credentials arrive on each request as X-Ninja-* headers; they are not read from the environment.

docker build -t ninjaone-mcp .

docker run \ -e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \ -p 127.0.0.1:8080:8080 \ ninjaone-mcp

Compose refuses to start when CONDUIT_S2S_SECRET is unset, defaults AUTH_MODE to gateway, publishes 127.0.0.1:8080:8080, and does not inject NINJAONE_CLIENT_ID or NINJAONE_CLIENT_SECRET:

CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up

Single-tenant HTTP (AUTH_MODE=env) still requires the S2S secret, then uses NINJAONE_CLIENT_ID and NINJAONE_CLIENT_SECRET:

docker run \

-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \ -e AUTH_MODE=env \ -e NINJAONE_CLIENT_ID=your-client-id \ -e NINJAONE_CLIENT_SECRET=your-client-secret \ -e NINJAONE_REGION=us \ -p 127.0.0.1:8080:8080 \ ninjaone-mcp

Local HTTP without a secret is development-only. It binds 127.0.0.1 only and logs a warning:

MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm start

Sign each /mcp request with X-Gateway-S2S as described in HTTP authentication. In gateway mode, also send X-Ninja-Client-ID and X-Ninja-Client-Secret.

Available Domains

Devices

Manage endpoints, reboot devices, view services and alerts.

Tools:

  • ninjaone_devices_list - List devices, filterable by organization, device class, and online status. Paginated: a full page returns hasMore: true and a cursor to pass back for the next page.
  • ninjaone_devices_get - Get device details
  • ninjaone_devices_reboot - Schedule a device reboot
  • ninjaone_devices_services - List Windows services on a device
  • ninjaone_devices_alerts - Get device-specific alerts
  • ninjaone_devices_activities - View device activity log
  • ninjaone_devices_get_custom_fields - Get device custom fields
  • ninjaone_devices_update_custom_fields - Update device custom fields
Organizations

Manage customer organizations and their resources.

Tools:

  • ninjaone_organizations_list - List organizations
  • ninjaone_organizations_get - Get organization details
  • ninjaone_organizations_create - Create a new organization
  • ninjaone_organizations_locations - List organization locations
  • ninjaone_organizations_devices - List devices for an organization. device_class is sent upstream as df=class= and applied to each page. The response is { devices, count, hasMore, cursor }, not a bare array.
  • ninjaone_organizations_get_custom_fields - Get organization custom fields
  • ninjaone_organizations_update_custom_fields - Update organization custom fields
Alerts

View and manage alerts across all devices.

Tools:

  • ninjaone_alerts_list - List alerts with filters
  • ninjaone_alerts_get - Get a single alert by UID (renders as an interactive card in MCP Apps hosts)
  • ninjaone_alerts_reset - Reset/dismiss a single alert
  • ninjaone_alerts_reset_all - Reset all alerts for a device or organization
  • ninjaone_alerts_summary - Get alert count summary

Features:

  • Interactive Alert Card (MCP Apps, SEP-1865): ninjaone_alerts_get renders as an interactive card in MCP Apps hosts (Claude Desktop/web) with an in-card "Reset alert" round-trip via ninjaone_alerts_reset; neutral by default, brandable via window.__BRAND__ injection or MCP_BRAND_* env vars; plain-JSON behavior is unchanged in other hosts
Tickets

Manage service tickets.

Tools:

  • ninjaone_tickets_list - List tickets from a board (requires board_id; status/organization_id/device_id filters are applied client-side, see notes below)
  • ninjaone_tickets_get - Get ticket details
  • ninjaone_tickets_create - Create a new ticket (requires a ticket_form_id)
  • ninjaone_tickets_update - Update an existing ticket's fields
  • ninjaone_tickets_add_comment - Add a comment to a ticket
  • ninjaone_tickets_comments - Get ticket log entries, optionally filtered by type
  • ninjaone_tickets_boards_list - List ticket boards (to discover board_id values)
  • ninjaone_tickets_forms_list - List ticket forms (to discover ticket_form_id values)
  • ninjaone_tickets_form_get - Get one ticket form with its field definitions
  • ninjaone_tickets_statuses_list - List the tenant's configured ticket sta

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く