npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@teamnetwork-nz/prtg-mcp-server

v1.2.0

Published

MCP server for PRTG Network Monitor — v2 REST API only, no database required

Downloads

275

Readme

@teamnetwork/prtg-mcp-server

An MCP server for PRTG Network Monitor that uses the PRTG v2 REST API exclusively — no database, no Data Exporter add-on required.

Compatible with Claude Desktop, Claude Code, Cursor, Cline, and any MCP-capable client.

Requirements

  • Node.js 18+
  • PRTG Network Monitor 25.1.102.1373 or later with API v2 enabled (tested against 25.1.102.1373+)
  • A PRTG API key (PRTG → My Account → API Keys)

Installation

npx @teamnetwork/prtg-mcp-server

Or install globally:

npm install -g @teamnetwork/prtg-mcp-server
prtg-mcp-server

Configuration

Set these environment variables before starting the server:

Required

| Variable | Description | |---|---| | PRTG_BASE_URL | Scheme + host + port only — e.g. https://prtg.example.com:1616. Do not append /api/v2. | | PRTG_API_KEY | Bearer token from PRTG → My Account → API Keys |

Optional

| Variable | Default | Description | |---|---|---| | PRTG_READWRITE | false | Set to true to enable write tools (pause, resume, acknowledge) | | PRTG_IGNORE_SSL | false | Set to true to skip TLS verification (self-signed certs) | | PRTG_TZ | local | Timezone for date input/output — see Timezone handling below | | PRTG_TRANSPORT | stdio | Transport mode: stdio (default, local) or http (remote agent hosting) | | PRTG_HTTP_PORT | 3000 | Port to listen on when PRTG_TRANSPORT=http | | PRTG_HTTP_HOST | 0.0.0.0 | Bind address when PRTG_TRANSPORT=http |

Timezone handling

All PRTG API timestamps are UTC. By default this server converts them automatically — inputs from local time to UTC, outputs from UTC to local — so you never have to think about UTC offsets.

PRTG_TZ controls which timezone is applied:

| Value | Behaviour | |---|---| | local (default) | Use the system's local timezone (Intl.DateTimeFormat auto-detection) | | utc | No conversion — dates pass through unchanged in UTC | | IANA name e.g. Pacific/Auckland | Use this explicit timezone regardless of system locale |

Output dates are returned as ISO-8601 strings with a UTC offset suffix, e.g. 2026-05-09T01:44:56+12:00.

Input dates (e.g. for get_timeseries_custom) should be local wall-clock time without a timezone suffix, e.g. 2024-01-15T09:00:00. The server converts them to UTC before sending to PRTG. DST transitions are handled automatically via a two-pass offset resolution.

Claude Desktop configuration

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "prtg": {
      "command": "npx",
      "args": ["-y", "@teamnetwork/prtg-mcp-server"],
      "env": {
        "PRTG_BASE_URL": "https://prtg.example.com:1616",
        "PRTG_API_KEY": "your-api-key-here"
      }
    }
  }
}

Claude Code configuration

claude mcp add prtg \
  -e PRTG_BASE_URL=https://prtg.example.com:1616 \
  -e PRTG_API_KEY=your-api-key-here \
  -- npx -y @teamnetwork/prtg-mcp-server

Running as a remote HTTP server

Set PRTG_TRANSPORT=http to start an HTTP server instead of reading from stdin. The server exposes a single endpoint at /mcp using the MCP Streamable HTTP transport in stateless mode. A health check is available at GET /health.

PRTG_BASE_URL=https://prtg.example.com:1616 \
PRTG_API_KEY=your-api-key \
PRTG_TRANSPORT=http \
PRTG_HTTP_PORT=3000 \
PRTG_TZ=Pacific/Auckland \
node dist/index.js

Docker

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY dist/ ./dist/
ENV PRTG_TRANSPORT=http
ENV PRTG_HTTP_PORT=3000
EXPOSE 3000
CMD ["node", "dist/index.js"]
npm run build
docker build -t prtg-mcp-server .
docker run -p 3000:3000 \
  -e PRTG_BASE_URL=https://prtg.example.com:1616 \
  -e PRTG_API_KEY=your-api-key \
  -e PRTG_TZ=Pacific/Auckland \
  prtg-mcp-server

Claude Code config for remote HTTP server

{
  "mcpServers": {
    "prtg": {
      "type": "http",
      "url": "https://your-host:3000/mcp"
    }
  }
}

Agent guidance

The server supplies MCP instructions that are automatically delivered to the calling agent at session start. These cover:

  • Datetime handling — input and output format, PRTG_TZ timezone configuration
  • Object hierarchy — Probes → Groups → Devices → Sensors, and which tools navigate it
  • Sensor filtering — which filters are server-side vs client-side
  • Metrics tools — when to use each timeseries tool
  • Write actions — best practices for pause, resume, and acknowledge

No special prompting is required — the agent receives these guidelines automatically.

Available tools

Sensors

| Tool | Description | |---|---| | list_sensors | List sensors with filters: status, name, parentid, tags, type | | get_sensor | Get full details for a sensor by ID | | list_alerts | List sensors in down / warning / unusual / acknowledged state |

Devices & groups

| Tool | Description | |---|---| | list_devices | List devices with filters: name, parentid, tags, host | | get_device | Get full details for a device by ID | | list_groups | List groups with optional filters | | list_probes | List probes (top-level monitoring nodes) |

Navigation

| Tool | Description | |---|---| | get_hierarchy | Full object tree: probes → groups → devices (optionally with sensors) | | search | Universal name search across sensors, devices, and groups |

Metrics

| Tool | Description | |---|---| | get_channels | Current channel values for a sensor (value, unit, min/max/avg) | | get_timeseries | Historical data for predefined timeframes: live, short, medium, long | | get_timeseries_custom | Historical data for a custom date/time range (local time input, auto-converted to UTC) |

System

| Tool | Description | |---|---| | get_statistics | Aggregated counts of sensors/devices/groups by status | | get_license | PRTG license edition, sensor limits, expiry |

Write actions (enabled with PRTG_READWRITE=true; off by default)

| Tool | Description | |---|---| | pause_sensor | Pause a sensor (optionally with message and auto-resume duration) | | resume_sensor | Resume a paused sensor | | acknowledge_alert | Acknowledge a down/warning sensor with a message |

Read-only mode (default)

Write tools (pause_sensor, resume_sensor, acknowledge_alert) are off by default. Set PRTG_READWRITE=true to enable them. When disabled, those tools are never registered — they won't appear in the tool list at all.

Development

npm install
npm run build

# Run locally
PRTG_BASE_URL=https://prtg.example.com:1616 \
PRTG_API_KEY=your-key \
node dist/index.js

Test with the MCP inspector:

npx @modelcontextprotocol/inspector node dist/index.js

License

MIT