关于 PRTG
PRTG 是面向自托管 Paessler PRTG Network Monitor 实例的只读 MCP 服务,使用 REST API v2 提供设备与传感器状态、测量历史和告警查询,不包含监控或管理变更操作。
主要功能
- 01列出设备、组和探针
- 02查看传感器状态与设置
- 03获取传感器测量历史
- 04列出当前告警
- 05汇总传感器状态
- 06检查 PRTG 版本
适用场景
- 01检查基础设施设备和传感器健康状况
- 02调查传感器测量历史
- 03查找处于告警状态的传感器
- 04验证 PRTG 连通性和版本
MCP 相关
将 PRTG REST API v2 的只读操作作为 MCP 工具提供,使用 API 密钥和 PRTG Application Server 基础 URL。工具范围排除写入和管理操作。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
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.1PRTG_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+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/wyre-ai/prtg-mcp:v1.0.1stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
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_URL | PRTG Application Server 的基础 URL(它提供 API v2),例如 https://prtg.example.com:1616。不是经典 Web 界面的 URL——请参阅上文的 基础 URL(本地部署)。 |
MCP_TRANSPORT | stdio(默认)或 http。 |
AUTH_MODE | env(默认,读取上述变量)或 gateway(凭据随每个请求通过 X-PRTG-Api-Key / X-PRTG-Base-URL 标头传入,由 Conduit 网关注入)。 |
CONDUIT_S2S_SECRET | 设置此项后,HTTP 传输要求每个 /mcp 请求都包含有效的 X-Gateway-S2S 标头(Conduit sidecar 身份验证)。 |
LOG_LEVEL | debug | 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
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。