mcpField
P
PRTG

PRTG

本地服务
github.com云与基础设施06 天前更新

关于 PRTG

PRTG 是面向自托管 Paessler PRTG Network Monitor 实例的只读 MCP 服务,使用 REST API v2 提供设备与传感器状态、测量历史和告警查询,不包含监控或管理变更操作。

主要功能

  1. 01列出设备、组和探针
  2. 02查看传感器状态与设置
  3. 03获取传感器测量历史
  4. 04列出当前告警
  5. 05汇总传感器状态
  6. 06检查 PRTG 版本

适用场景

  1. 01检查基础设施设备和传感器健康状况
  2. 02调查传感器测量历史
  3. 03查找处于告警状态的传感器
  4. 04验证 PRTG 连通性和版本

MCP 相关

将 PRTG REST API v2 的只读操作作为 MCP 工具提供,使用 API 密钥和 PRTG Application Server 基础 URL。工具范围排除写入和管理操作。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"wyre-ai-prtg": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"PRTG_API_KEY",
"-e",
"PRTG_BASE_URL",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-ai/prtg-mcp:v1.0.1"
],
"env": {
"PRTG_API_KEY": "<PRTG_API_KEY>",
"PRTG_BASE_URL": "<PRTG_BASE_URL>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
启动命令docker run -i --rm -e PRTG_API_KEY -e PRTG_BASE_URL -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/prtg-mcp:v1.0.1
需要配置的环境变量
PRTG_API_KEY密钥PRTG API key (Bearer token, generated in the PRTG web UI under Account Settings -> My Account -> API Keys).
PRTG_BASE_URLBase URL of the PRTG Application Server for self-hosted PRTG Network Monitor (which serves API v2; HTTPS port 1616 by default), e.g. https://prtg.example.com:1616. Not the classic web interface URL. PRTG Hosted Monitor does not provide API v2.
MCP_TRANSPORTTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.
AUTH_MODE密钥Credential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.
LOG_LEVELLog verbosity: debug, info, warn, error

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/wyre-ai/prtg-mcp:v1.0.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

PRTG MCP 服务

适用于 Paessler PRTG REST API v2 的 MCP 服务,可供 AI 助手和 WYRE Conduit 网关使用,用于查看 PRTG 网络/基础设施监控实例中的设备/传感器状态、监控数据(通道测量历史记录)和警报(处于警报状态的传感器)。

身份验证

PRTG 使用静态的 Bearer API 密钥进行身份验证。可在 PRTG Web 界面的 Account Settings -> My Account -> API Keys 下生成密钥。生成密钥无需管理员批准,任何 PRTG 用户都可以为自己创建密钥。与本系列中的大多数连接器不同,PRTG 没有固定的托管 API 端点:此连接器支持通过自有基础 URL 访问自托管的 PRTG Network Monitor(PRTG Hosted Monitor 尚不提供 API v2;详见下文),因此需要同时提供 API 密钥和基础 URL。密钥会通过 Authorization: Bearer <key> 发送至 <base URL>/api/v2/...。在网关模式下,每个请求都会通过 X-PRTG-Api-Key 和 X-PRTG-Base-URL 标头携带这两项信息;在本地/stdio 模式下,则从 PRTG_API_KEY 和 PRTG_BASE_URL 读取一次。

凭据范围

由供应商提供文档说明,但未通过实时账户独立验证(原因见下文的验证部分):根据 Paessler 自己的 PRTG API v2 文档,API 密钥会继承创建它的 PRTG 用户账户的全部权限,无法单独将密钥限定为只读。Paessler 针对 AI 助手集成的建议十分明确:“为 AI 助手使用的 [API 密钥] 授予适合该助手任务的最低用户角色”,并建议先创建一个专用的只读 PRTG 用户账户,再使用该账户生成 API 密钥,而不是依赖密钥本身限制访问。此连接器无法在 PRTG 端强制执行这一要求,只实现了下文所述的只读工具接口,因此实际能否保证只读,取决于客户生成密钥时是否遵循 Paessler 的建议。

基础 URL(本地部署)

对于本地部署的 PRTG Network Monitor,API v2 仅由 PRTG Application Server 提供,而非经典 Web 界面。请使用 Application Server 的 HTTPS URL,默认端口为 1616,例如 https://prtg.example.com:1616。Application Server 也会在端口 1615 上监听纯 HTTP,但每个请求都会携带 Bearer API 密钥,因此仅应在受信任的网络上使用 http://...:1615。经典 Web 界面 URL(端口 80/443)不提供 /api/v2,通常会返回 404、重定向或 HTML 登录页,看起来像是身份验证失败。

只有在启用 New UI and API v2 后,Application Server 才会存在:在经典 UI 中前往 Setup | Overview 并选择 Activate(端口 1616/1615 和 23580 必须空闲;核心服务会重启)。Paessler 表示,自 PRTG 25.2.106 起,新 PRTG 用户默认启用此功能。已有安装、升级后的安装,以及 Setup | Overview 中仍显示 Activate New UI And API v2 的任何安装,都必须手动启用。Paessler 还表示,PRTG Hosted Monitor 和以集群模式运行的 PRTG 安装目前尚不支持 API v2。请参阅 Paessler 的我想使用新版 UI 和 API v2。需要了解什么?和新版用户界面手册页面。

验证

此连接器直接依据 PRTG 官方的最新 OpenAPI v2 规范(prtg.api.yaml,发布于 paessler.com/support/prtg/api/v2/oas/)构建,而非依据二手文档或命名惯例——以下每个工具都对应规范中一个真实且命名明确的操作,并使用其准确的查询参数。但它未经实时 PRTG 实例独立验证:PRTG 的免费试用方案包括(a)为期 30 天的 PRTG Network Monitor 试用版,这是仅适用于 Windows 的本地部署软件;以及(b)为期 10 天的 PRTG Hosted Monitor 试用版(app.my-prtg.com/signup),这是云端 SaaS 注册流程,但在此构建环境中无法完成验证流程(没有 Windows 主机可安装 PRTG Network Monitor;也没有可用于完成 PRTG Hosted Monitor 注册确认的电子邮箱收件箱)。对于拥有 Windows 机器或可查收邮件收件箱的人来说,这两种试用都确实可以自行注册——这是构建环境的限制,并非供应商一方的审批门槛。

配置

环境变量描述
PRTG_API_KEY由 PRTG Web UI 签发的 Bearer API 密钥。
PRTG_BASE_URLPRTG Application Server 的基础 URL(它提供 API v2),例如 https://prtg.example.com:1616。不是经典 Web 界面的 URL——请参阅上文的 基础 URL(本地部署)。
MCP_TRANSPORTstdio(默认)或 http。
AUTH_MODEenv(默认,读取上述变量)或 gateway(凭据随每个请求通过 X-PRTG-Api-Key / X-PRTG-Base-URL 标头传入,由 Conduit 网关注入)。
CONDUIT_S2S_SECRET设置此项后,HTTP 传输要求每个 /mcp 请求都包含有效的 X-Gateway-S2S 标头(Conduit sidecar 身份验证)。
LOG_LEVELdebug | info(默认)| warn | error。

请求限制

  • HTTP 请求正文上限为 256 KiB(262144 字节)。通过 X-Gateway-S2S 检查后,如果 Content-Length 超出上限,将返回状态码 413 和 JSON-RPC 错误;没有 Content-Length 的正文(例如分块传输)由 MCP SDK 传输层限制,该层也会返回 413。超出大小限制的工具输入会返回固定错误 Tool input exceeds the maximum of 10000 elements。未经身份验证的请求仍会优先收到 401。
  • tools/call 参数上限为 10,000 个元素(包括任意深度的每个数组项和对象键)。更大的输入会返回一个 isError 工具结果,且不会被分发。

这些限制旨在应对 CVE-2026-111768 / GHSA-46jr-4wx8-v453(验证期间内存耗尽)和 GHSA-f897-62hf-6gxq(缺少请求正文 / 批量上限)。

工具

设备
  • prtg_list_devices - 列出受监控的设备(主机名/IP、状态、父级组/探针)。
  • prtg_get_device - 获取单个设备的指标和设置。
组
  • prtg_list_groups - 列出组(包含设备的组织文件夹)。
  • prtg_get_group - 获取单个组的指标和设置。
探针
  • prtg_list_probes - 列出探针(运行实际传感器检查的监控 Agent,包括本地、远程或迷你型)。
  • prtg_get_probe - 获取单个探针的指标和设置。
  • prtg_get_probe_network_info - 获取探针的网络信息。
传感器
  • prtg_list_sensors - 列出设备上关联的传感器(单项检查,例如 ping、HTTP、SNMP 等)及其当前状态。
  • prtg_get_sensor - 获取单个传感器的指标和设置。
  • prtg_get_sensor_data - 获取传感器的通道测量历史记录(实际监控/性能数据)。
  • prtg_list_alarms - 列出当前处于 Down/Warning/Unusual 等警报状态的传感器。PRTG 的告警入口。
传感器状态摘要
  • prtg_get_sensor_status_summary - 获取整个实例中所有传感器状态的摘要。
  • prtg_get_object_sensor_summary - 获取特定探针、组或设备范围内的传感器状态摘要。
通道
  • prtg_get_channel - 获取传感器上单个通道的指标和设置(单位、限制、当前值)。
系统
  • prtg_get_version - 获取 PRTG 核心/应用服务器版本。可用于检查凭据和连接是否正常。

范围

这是一个刻意限定范围的只读 v1 接口,仅涵盖设备/传感器状态、监控数据和警报,不包含其他内容。 PRTG API v2 文档涵盖了大量接口(对象增删改查、自动发现、用户/API 密钥管理、AI 助手端点以及整个 /experimental 命名空间);此连接器从中实现了 15 个 GET 操作(10 个稳定的非实验性操作,以及 5 个有文档记录但已弃用的操作,见下文),并逐一根据官方 OpenAPI 规范进行了验证。按照设计而非疏忽,它排除了所有写入/暂停/恢复/扫描/确认/发现/管理操作,以及所有真正属于 /experimental/* 的端点。

15 个已实现端点中,有几个(GET /devices、/groups、/probes、/sensors、/sensors/alarms)在 PRTG 自己的 v2 规范中标记为 deprecated,并建议改用 /experimental/* 中的替代端点。此连接器特意使用有文档记录且目前仍可正常工作的已弃用端点,而非其 /experimental 替代端点:PRTG 自己的规范指出,实验性端点“可能会变更”,而已弃用的端点“仍可使用”,且它是唯一能以非实验方式列出 PRTG 核心对象类型的途径。相较于当前可用但不稳定的端点,稳定但已弃用的端点被认为是更适合生产连接器的选择;下文明确排除所有 /experimental/* 端点(无论是否为列表端点)。

严格排除(变更操作——暂停/恢复/扫描)——绝不实现: POST /devices/{id}/pause、/devices/{id}/resume、/devices/{id}/scan、/devices/pause、/devices/resume、/devices/scan、/groups/{id}/pause、/groups/{id}/resume、/groups/{id}/scan、/groups/pause、/groups/resume、/groups/scan、/probes/{id}/pause、/probes/{id}/resume、/probes/{id}/scan、/probes/pause、/probes/resume、/probes/scan、/sensors/{id}/pause、/sensors/{id}/resume、/sensors/{id}/scan、/sensors/pause、/sensors/resume、/sensors/scan、/users/{id}/pause、/users/{id}/resume、/users/pause、/users/resume。

严格排除(确认警报)——绝不实现: POST /sensors/{id}/acknowledge、/sensors/acknowledge——确认警报会更改 PRTG 的警报状态;即使它看起来像状态查询,也超出此连接器严格限定的范围,因此予以排除。

严格排除(对象变更)——绝不实现: POST /objects/{id}/move、/objects/{id}/clone,以及整个 /experimental 命名空间中的创建/更新/删除操作(PATCH /experimental/groups/{id}、/experimental/probes/{id}、/experimental/sensors/{id};POST /experimental/groups/{id}/group、/experimental/probes/{id}/group、/experimental/groups/{id}/device、/experimental/probes/{id}/device、/experimental/devices/{id}/sensor;DELETE /experimental/devices/{id}),以及其中只读列表端点的镜像(GET /experimental/devices、/experimental/groups、/experimental/probes、/experimental/sensors、/experimental/channels、/experimental/objects、/experimental/devices/templates)。由于 PRTG 自己的文档称整个命名空间可能发生变更,因此整体排除,而不逐个审查其安全性。

严格排除(自动发现)——绝不实现: GET /autodiscoveries、/experimental/autodiscoverytasks、/experimental/autodiscoverytasks/{id};POST /experimental/devices/{id}/autodiscovery、/experimental/groups/{id}/autodiscovery、/experimental/devices/{id}/metascan、/experimental/probes/{id}/autodiscoverytask、/experimental/autodiscoverytasks/{id}/start——自动发现会盘点网络设备并触发网络扫描,超出此连接器关于设备/传感器/监控/警报的范围。 硬性排除(用户/API 密钥/会话/许可证管理——身份和凭据管理,不涉及设备/传感器/警报数据)——从未实现: GET/POST/PATCH /users*、/experimental/users*、/usergroups*、/experimental/usergroups*、/users/api-keys/find、/users/{id}/api-keys、DELETE /users/api-keys/{id}、POST/GET/DELETE /session(登录/续期/注销)、POST /users/request-password、/users/reset-password、GET /experimental/license。

硬性排除(对象架构/通用 CRUD/设置/AI 功能/杂项管理)——不在范围内,从未实现: GET/POST/PATCH /schemas/{kind}、/experimental/schemas/*、GET /experimental/objects、/objects、/objects/count、/libraries、/lookup-definitions*、/setting-lookups/{name}、/settings/public、/health(仅用于未经身份验证的存活检查——此连接器改用经过身份验证的 prtg_get_version 进行健全性检查)、/devices/icons、/experimental/feature-toggles、/experimental/featureflags、/experimental/ai/analyze、/experimental/ai/status、/experimental/timeseries/{id}、/experimental/timeseries/{id}/{type}、/channels(列表)和 /channels/data(两者都已弃用,建议改用已实现的 GET /channels/{id};该接口本身未弃用)、/channels/{id}/overview、/devices/{id}/overview、/groups/{id}/overview、/probes/{id}/overview、/sensors/{id}/overview(这些接口均已弃用,建议改用已实现的对应非 overview GET .../{id} 接口)。

如有需求,可以在审慎决定范围后作为后续工作添加——默认不会添加。

开发

npm install
npm run build
npm test
npm run lint   # tsc --noEmit

Docker

docker build -t prtg-mcp .
docker run -p 8080:8080 -e PRTG_API_KEY=... -e PRTG_BASE_URL=https://prtg.example.com:1616 prtg-mcp

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。