@teamnetwork-nz/prtg-mcp-server
v1.2.0
Published
MCP server for PRTG Network Monitor — v2 REST API only, no database required
Downloads
275
Maintainers
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-serverOr install globally:
npm install -g @teamnetwork/prtg-mcp-server
prtg-mcp-serverConfiguration
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-serverRunning 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.jsDocker
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-serverClaude 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_TZtimezone 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.jsTest with the MCP inspector:
npx @modelcontextprotocol/inspector node dist/index.jsLicense
MIT
