关于 SaaS Alerts MCP
SaaS Alerts MCP 是面向 MSP 团队的 CLI 和 MCP 服务,用于处理多个客户租户的警报与 Respond 工作流。它覆盖 SaaS Alerts 的四组 API,并提供跨客户分流、按期限排列的审批队列和先预览再执行的变更。
主要功能
- 01访问 SaaS Alerts 的四组 API
- 02跨客户警报分流
- 03按截止时间排列 Respond 审批
- 04使用本地 SQLite 进行租户查询
- 05确认前预览变更
适用场景
- 01优先处理各客户的严重警报
- 02查找即将过期的 Respond 触发项
- 03调查多个租户中的重复 IP 活动
- 04预览账户隔离或触发项决策
MCP 相关
MCP 服务向 MCP 客户端提供 SaaS Alerts API 操作,包括警报、Respond、抑制规则和 Webhook。README 建议使用默认 stdio 传输,并避免在当前版本启用 HTTP 模式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
原文在翻译后有更新,译文可能不是最新。
SaaS Alerts + AI——适用于 ChatGPT、Claude、GitHub Copilot、Microsoft 365 Copilot、Gemini,以及任何支持 MCP 的 Agent
非官方项目。由社区构建的 Claude Code Skill 和 SaaS Alerts API 的 MCP 服务。与 Kaseya US LLC 无关联,也未获得其认可或赞助。
▶ 观看 30 秒演示——演示数据为模拟数据;展示的每条命令都可在实际 CLI 中使用。
通过一个 CLI 和 MCP 服务接入 SaaS Alerts 的全部四种 API(Reports、Manage、Respond 和 Webhooks),还提供跨客户警报分类、按截止时间排序的 Respond 审批队列,以及预览优先的账户遏制功能。可与您已在使用的 AI 配合使用——ChatGPT(Plus/Pro+)、Claude Desktop、Codex、Claude Code、Claude Cowork 和 GitHub Copilot——也可通过远程方式接入 Microsoft 365 Copilot / Copilot Studio 和 Google Gemini。免费、开源,可在笔记本电脑上运行。专为 MSP 所有者打造。无需编写代码。
适用于您的 Agent
MSP 所有者实际使用的六种 Agent(可自行安装,现已可用):
| 您的 AI Agent | 如何安装 SaaS Alerts 技能 |
|---|---|
| Claude Desktop | 运行安装程序,然后前往 Settings > Extensions 注册 saas-alerts-mcp(无需编辑 JSON)。 |
| ChatGPT(付费方案) | 运行安装程序,通过 HTTPS 公开 saas-alerts-mcp,并将其注册为 Developer Mode 连接器。 |
| Codex CLI | 粘贴下方的安装提示词。 |
| Claude Code | 粘贴下方的安装提示词。 |
| Claude Cowork | 粘贴下方的安装提示词。 |
| GitHub Copilot(VS Code) | 运行安装程序,在 mcp.json 的 servers 键下添加 saas-alerts-mcp,然后选择 Agent 模式。 |
对于 ChatGPT,请运行 saas-alerts-mcp --transport http,并通过 HTTPS 将其公开——无需桥接软件包。请参阅 mcp-install.md。
也适用于 Microsoft 和 Google 技术栈
这两种方案的安装基础都很广,但需要说明:它们属于远程 / 企业级接入方式,而不是您刚安装的本地二进制程序。
| Agent | 所需操作 |
|---|---|
| Microsoft 365 Copilot / Copilot Studio | 无法自行安装。 通过 HTTPS 托管 saas-alerts-mcp,然后将其接入 Copilot Studio(Tools > Add a tool > Model Context Protocol > Server URL)或声明式 Agent。需要 Copilot Studio 许可证和租户管理员权限。请参阅 mcp-install.md。 |
| Google Gemini | Gemini CLI 在本地运行——与 Claude Code 相同。Gemini app 通过远程方式运行——与 ChatGPT 一样使用 HTTPS 接入。请参阅 mcp-install.md。 |
原生支持技能的 Agent(也适用): Hermes 和 OpenClaw 可直接读取此技能的
SKILL.md,并且支持 MCP——请参阅下方对应的安装章节。也可通过 MCP 与 Cursor、Windsurf、Cline、Continue.dev 和 Zed 配合使用。各工具的完整接入说明:docs/which-agent.md。
要使用多个 Agent? 只需一条命令,即可在所有 51 种以上受支持的 Agent 中完成安装:
npx skills add Servosity/msp-skills@latest(需要 Node.js,然后运行对应技能的安装程序来安装 CLI/MCP 二进制程序)。请参阅 docs/which-agent.md。
60 秒内完成安装
Claude Desktop 最快捷方式 - 一键安装 .mcpb
下载 SaaS Alerts MCP(.mcpb) - 然后打开 Claude Desktop > Settings > Extensions 并选择该文件。一键完成,无需 JSON,也无需使用 shell。(在发布页面浏览所有 SaaS Alerts 版本。)
更喜欢 Claude Code 插件?添加一次市场,然后安装即可立即使用,无需列出目录:
/plugin marketplace add Servosity/msp-skills
/plugin install saas-alerts@msp-skills
方式 A - 将一条提示词粘贴到 AI Agent 中(推荐)
将以下内容复制到 Claude Code、Codex CLI 或 Claude Cowork:
在此 Agent 工作区中安装来自 Servosity/msp-skills 的 SaaS Alerts Skill 和 MCP 服务。如果此工作区使用 POSIX shell(macOS、Linux、WSL 或 Bash),请运行
bash <(curl -fsSL https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/saas-alerts/install.sh)。如果使用 Windows PowerShell,请运行iwr -useb https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/saas-alerts/install.ps1 | iex。然后按照 README 进行身份验证,并运行saas-alerts-cli --help进行探索。
同一条提示词适用于任何能够运行 shell 的 Agent。
方式 B - 自行运行安装程序
Windows(PowerShell):
iwr -useb https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/saas-alerts/install.ps1 | iex
macOS / Linux:
bash <(curl -fsSL https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/saas-alerts/install.sh)
安装程序会将 saas-alerts-cli(CLI)和 saas-alerts-mcp(MCP 服务)放入用户的 bin 路径。Claude Code、Codex 和 Cowork 会通过此目录中的 SKILL.md 发现 Skill。
验证:
saas-alerts-cli --version
升级到最新版本
安装程序始终获取当前版本 - 重新运行即可升级:
macOS / Linux:
bash <(curl -fsSL https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/saas-alerts/install.sh)
Windows(PowerShell):
iwr -useb https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/saas-alerts/install.ps1 | iex
Claude Desktop .mcpb 用户:下载最新的 .mcpb(位于本节顶部),然后在 Settings > Extensions 中重新选择。Claude Code 插件用户:/plugin update saas-alerts@msp-skills。
添加到 Claude Desktop、GitHub Copilot、Gemini CLI、Microsoft 365 Copilot 或其他 MCP 客户端
安装程序运行后,请参阅 mcp-install.md 和 docs/which-agent.md,了解各 Agent 的连接方式 - 每个 Agent 各有一个章节,其中包括 GitHub Copilot 的 servers 键,以及远程 Microsoft 365 Copilot / Copilot Studio 的连接方式。Claude Desktop 的 Settings > Extensions 面板是最简单的方式;面向偏好编辑 JSON 的用户的 MCP 配置块记录在 mcp-install.md 中。
为 Hermes 安装
在 Hermes CLI 中:
hermes skills install servosity/msp-skills/skills/saas-alerts --force
在 Hermes 聊天会话中:
/skills install servosity/msp-skills/skills/saas-alerts --force
Hermes 原生支持 MCP,因此也可以直接使用 saas-alerts-mcp 服务 - 安装方式和环境变量相同。
为 OpenClaw 安装
告诉你的 OpenClaw Agent(复制以下内容):
从 https://github.com/servosity/msp-skills/tree/main/skills/saas-alerts 安装 saas-alerts skill。该 skill 说明了如何通过
openclaw:frontmatter 块安装其必需的 CLI(saas-alerts-cli)。
OpenClaw 尚未普遍开放;frontmatter 配置已预先提供,OpenClaw 一经发布便会立即启用。
身份验证
从 SaaS Alerts 控制面板设置合作伙伴 API 密钥(Settings > API、GET APIKEY;SaaS Alerts 只会在离开页面前显示密钥,因此请及时复制):
SAAS_ALERTS_API_KEY=<value> saas-alerts-cli doctor
在 Windows(PowerShell)上:
$env:SAAS_ALERTS_API_KEY = "<value>"
saas-alerts-cli doctor
doctor 会检查配置、路径和 API 连通性,并将密钥发送到 Reports API 的合作伙伴配置文件端点,因此被拒绝的密钥会显示为 Credentials: invalid 行。即使出现此情况,它也会以 0 退出,因此脚本应添加 --fail-on error。Respond 访问令牌会在首次调用 Respond 时生成,而不是由 doctor 生成;saas-alerts-cli respond status 可确认 Respond 端到端运行正常。
此技能的作用
| MSP 常问的问题 | 命令 |
|---|---|
| 过去 24 小时内所有客户触发了哪些告警?先看严重告警。 | saas-alerts-cli triage --since 24h --min-severity medium |
| 哪些 Respond 触发器最早会过期或自动忽略? | saas-alerts-cli rule-triggers queue --expiring-within 2h |
| 是否有同一个 IP 地址正在访问我的两个或更多客户? | saas-alerts-cli cross-tenant --by ip --since 24h --min-customers 2 |
| 查看某个账户的全部信息:事件、国家/地区跳转、Respond 触发器、设备 | saas-alerts-cli investigate "[email protected]" --since 7d |
| 哪些客户已停止上报、断开了 Respond 连接,或没有 Respond 规则? | saas-alerts-cli coverage --silent 72h |
| 为什么 SaaS Alerts 工单不再到达?Webhook 是否已禁用? | saas-alerts-cli subscriptions health |
| 拒绝此嘈杂规则下所有待处理的触发器(先预览) | saas-alerts-cli rule-triggers decide --decision reject --rule <rule-id> --remarks "false positive" |
| 此客户有哪些收件箱规则? | saas-alerts-cli reports mailbox-rules --organization-ids <customer-id> |
完整命令参考:guide.md。AI Agent 操作约定(--agent、--dry-run,以及修改前何时需要确认)请参阅 AGENTS.md。
有何不同
大多数 SaaS Alerts 集成和 MCP 服务会将每个问题代理为实时 API 调用。查询单条记录时这样做没问题,但规模扩大后就不行了;比如你要问“我的 80 个客户中,昨夜哪些客户出现了严重告警?是否有同一个 IP 与多个客户有关?”
此技能会将客户、事件、用户和 Respond 触发器同步到本地 SQLite 存储,因此 triage、cross-tenant、investigate 和 coverage 可以通过一次本地查询回答所有客户相关的问题;如果数据从未同步过,它会显示 synced: false,而不是返回空结果、让人误以为一切正常。它使用一个合作伙伴密钥覆盖全部四个 SaaS Alerts API:自行获取 Respond 访问令牌(Respond 对仅携带 API 密钥的请求会返回“Only secure origins are allowed”),通过 rule-triggers queue 按截止时间处理 Respond 队列;在你添加 --confirm 之前,rule-triggers decide 和 contain 会预览每项将要执行的更改。
WYRE-AI 的 saas-alerts-mcp 也为其 msp-claude-plugins 市场中的 SaaS Alerts 插件提供支持。它将 SaaS Alerts External Partner API 封装为 30 个工具,涵盖客户、事件、用户、设备、计费、定时报告和合作伙伴设置,但不包含 Respond、抑制或 Webhook 工具;它可以使用你自己的密钥在本地运行,也可以在其插件中使用时通过 WYRE 托管的 Conduit 网关运行。此技能则额外支持 Respond、抑制和 Webhook。它是 SaaS Alerts 仪表板的补充,而非替代品:仪表板仍用于配置监控、查看告警和设置 Respond。
它解决的痛点
SaaS Alerts 的 Respond 模块与时间赛跑。Respond API 文档说明,手动审批“会在规则再次触发或 12 小时后自动过期,以先到者为准”;SaaS Alerts 帮助中心的分析 Respond 触发还指出,修复失败后每 15 分钟会提醒一次,并在第三次提醒后自动忽略。在众多客户中,最难的是判断哪项决策会最先失效。试图提供帮助的脚本还会碰到另一项凭据要求:Respond 需要使用合作伙伴密钥签发的短期访问令牌,没有令牌的调用会失败并返回“Only secure origins are allowed”。在 r/msp 主题帖“Kaseya Saas Alerts API”中,一家 MSP 每次调用都遇到这个错误;另一人回复说自己“几周来一直在为同一个问题伤透脑筋”,怀疑是 CORS 问题,而该主题帖最终给出的解决方法是先向身份验证端点发送 POST 请求,再发送访问令牌。警报数量也确实不少:SaaS Alerts 的 MSP 用户在 G2 上表示,在配置调整到位前会收到大量通知,而且随着时间推移,你会逐渐学会过滤误报。
saas-alerts-cli triage --since 24h- 汇总所有客户的警报,按严重程度排序,并按客户、账户和事件类型分组。saas-alerts-cli rule-triggers queue --expiring-within 2h- 按剩余过期时间或自动忽略时间列出待处理和失败的 Respond 触发事件,并显示审批后将执行的操作。saas-alerts-cli cross-tenant --by ip- 查找命中两个或更多客户的源地址、网络或国家,并排除各客户自己的白名单。saas-alerts-cli coverage- 查找已无活动的客户、Respond 连接已丢失或没有 Respond 规则的客户。saas-alerts-cli contain "[email protected]"- 先预览,再为一个 Microsoft 365 账户阻止登录、使会话过期并重置密码。
更长的说明请参阅 pain-point.md。
常见问题
这能与 ChatGPT 配合使用吗?
可以,适用于 Plus、Pro、Team、Business、Enterprise 和 Education 套餐(Free 套餐目前尚未开放 Developer Mode)。ChatGPT 通过 HTTPS 连接 远程 MCP 服务,而不是本地 stdio 二进制程序。SaaS Alerts MCP 服务在本地运行,但原生支持 HTTP:启动时使用 saas-alerts-mcp --transport http 并设置 SAAS_ALERTS_MCP_HTTP_TOKEN(默认提供 http://127.0.0.1:7777/mcp,并要求在 bearer 标头中提供该令牌),再将其置于 HTTPS 网关之后;ChatGPT 可通过 OAuth 登录该网关,网关则会添加该 bearer 标头(ChatGPT 连接器不会发送固定令牌)。无需使用桥接包。请参阅 mcp-install.md 中的分步说明。
这能与 Codex、Cursor、Windsurf、Cline、Copilot 或 Gemini 配合使用吗?
可以——它们都支持 MCP。跨工具安装命令见上方的对照表,深入说明见 docs/which-agent.md。
我需要懂编程吗?
不需要。推荐的安装方式是将一句话粘贴到 Claude Code 或 Codex 中——你的 Agent 会读取 SKILL.md 并完成安装。备用方式是按操作系统使用一行安装命令(bash 或 PowerShell)。这两种方式都不需要编写代码。你只需输入一次 SaaS Alerts 凭据。
我的 SaaS Alerts 数据安全吗?
你的数据会保留在自己的设备上。命令行工具和 MCP 服务都是本地二进制文件。SQLite 存储位于你用户帐户下的目录中,其中包含客户的帐户电子邮件地址、登录 IP 和事件详情,因此请像对待这些数据的其他副本一样妥善处理。每个 webhook 订阅的投递令牌在打印、缓存或存储之前都会被隐藏。AI Agent 只能看到命令行工具返回的内容——通常是查询结果,而不是原始批量数据。凭据从你的环境或 Agent 配置中读取;MSP Skills 绝不会将其打包进此仓库或传输到任何地方。
在哪里获取 SaaS Alerts API 密钥?
在 SaaS Alerts 控制面板中,打开 Settings > API,然后点击 GET APIKEY。SaaS Alerts 只会在你离开该页面之前显示密钥,因此请及时复制。将其设置为 SAAS_ALERTS_API_KEY。这个合作伙伴密钥可用于 Reports、Manage 和 Webhooks API;命令行工具会在首次使用时用它换取 Respond 访问令牌,因此无需再粘贴第二个凭据。如果每次调用都返回 401 Access denied,请联系 SaaS Alerts 支持,为你的帐户启用 REST API。
为什么 Respond API 会返回“Only secure origins are allowed”?
当调用携带 api_key 却没有访问令牌时,Respond 就会返回此错误。Respond 需要使用合作伙伴密钥,通过 POST /respondApi/api/v1/auth 获取一个短期令牌。此连接器会在首次调用 Respond 时获取令牌,在每次 Respond 请求中发送该令牌,仅在该进程的内存中保留令牌;如果 Respond 拒绝令牌,则会重新获取一次。
AI 能自行封锁用户或批准 Respond 操作吗?
只有在你允许的情况下才可以。默认情况下,contain、rule-triggers decide 和 subscriptions health --reenable 都会先预览,不会做出任何更改,除非你添加 --confirm。生成的命令(rule-triggers approve、response-actions execute、customers delete 等)一旦运行就会发送请求,因此请使用 --dry-run 预览;该选项不会发送任何内容。通过 MCP 使用时,如果某个 Agent 只能读取数据,请设置 SAAS_ALERTS_MCP_READ_ONLY=1:此时 saas-alerts_execute 只会运行 GET 端点,且三个工作流写入命令都会拒绝 --confirm。
Respond 触发器会过期吗?
会。Respond API 文档说明,手动批准会在 12 小时后或规则再次触发时过期,以较早者为准;SaaS Alerts 帮助中心则说明,修复失败后,第三次 15 分钟提醒发出后会自动忽略该修复。rule-triggers queue 会按此期限列出待处理和失败的触发器,以及批准后将执行的操作;除非传入 --include-expired,否则 rule-triggers decide 会跳过已过期或已被取代的触发器。API 并未说明“再次触发”是指任何地方,还是同一客户,因此命令行工具只有在同一组织和帐户中,同一规则有更新的触发器时,才会将该触发器视为已被取代:它可能会显示 Respond 已经使某个触发器过期(此时 Respond 会拒绝批准),但绝不会隐藏仍有效的触发器。
为什么分诊结果显示 synced: false?
triage、investigate、cross-tenant 和 coverage 都会读取本地存储,因此需要先同步,例如 saas-alerts-cli sync --resources customers,events --since 7d。如果所需数据从未同步、上一次事件同步未完成(自动刷新会逐页获取数据),或者你查询的时间范围早于已同步事件中最早的时间,它们就会显示 synced: false,并附上说明如何修复的备注。使用 --param 缩小范围的同步会存储其行数据,但不会被视为完整同步。SaaS Alerts 可能会在事件发生一段时间后才记录该事件,因此每次显式执行 sync --resources events 时,都会重新读取上一次显式同步之前 6 小时内的数据;如果某个事件的记录时间晚于该范围,则需使用更宽的 --since 执行同步后才能看到。绝不会将空结果或部分结果显示为一切正常,并且 --select 始终会保留 synced 和 note 字段。
是否支持 Google Workspace 账号?
不支持。Respond 响应操作仅针对 Microsoft 365 运行,因此 contain 会拒绝 Google Workspace 或其他非 Microsoft 账号;如果某个邮箱匹配到多个 Microsoft 365 账号,也会停止操作。API 不会为操作返回任务 ID,因此 contain 会尽力报告每个任务的匹配结果,并始终标记为 verified: false;请在 Microsoft 365 管理中心检查账号。
是否已在实际运行的 SaaS Alerts 租户上测试?
尚未。每个端点都对应 SaaS Alerts 发布的 API 规范;Respond 令牌交换也已在未提供密钥的情况下通过实际 API 验证,但还没有合作伙伴使用真实数据运行过。以下两点仍待在实际租户上验证:部分同步请求被拒绝时,会报告为 sync_warning,因此即使有些页面被拒绝,sync --strict 仍可能以 0 退出;Unify 设备列表页面会像 Manage 规范所述那样,使用响应中 meta.sort 的 searchAfter 参数,但如果租户返回的只是普通列表,那么设备超过 1,000 台的合作伙伴就无法完整同步(sync 和 devices list --all 随后会提示结果已截断,而不会报告完整)。欢迎运行并告诉我们你的发现。
它能取代 SaaS Alerts 仪表板吗?
不能。配置监控、查看单个警报和设置 Respond 时,仪表板仍是最佳选择。此技能可回答涉及所有客户的问题,并通过你的 AI Agent 执行经过审核的操作。
费用是多少?
免费,采用 Apache-2.0 许可。你只需为所用的 AI Agent(Claude、ChatGPT、Codex 等)付费,费用由 AI 提供商收取,而非由我们收取。
安全模型
| 等级 | 示例 | 建议的 Agent 策略 |
|---|---|---|
| 读取 | triage、investigate、cross-tenant、coverage、rule-triggers queue、subscriptions health、rule-triggers decide 和 contain(不带 --confirm)、customers list、events list、events query、users、reports customers、reports mfa-microsoft、reports mailbox-rules、rules list、rule-triggers list、suppressions list、subscriptions list | 允许 |
| 账户响应 | contain --confirm、rule-triggers decide --confirm、rule-triggers approve、rule-triggers reject、rule-triggers ignore、rule-triggers manually-remediate、response-actions execute | 人机协同,需明确确认。这些操作会导致真实用户无法登录。 |
| 检测与响应配置 | customers set-whitelists、customers set-account-whitelists、suppressions create、suppressions update、suppressions delete、rules update、rules draft、rules duplicate、rule-templates use、iocs update、respond enable、application-connections connect、subscriptions create、subscriptions update、subscriptions health --reenable --confirm、webhook-domains verify | 先使用 --dry-run 预览,再由人工批准写入。白名单命令会替换客户的列表,因此应先读取列表。 |
| 写入(日常) | devices map、devices unmap、psa map、psa map-suggested、customers create、customers update、reports scheduled-create、reports update-branding、subscriptions test-event、files upload | 先使用 --dry-run 预览,再审核写入 |
| 凭证与访问 | files url(返回指向存储文件的签名链接)、auth set-token、auth logout | 仅限人机协同 |
| 破坏性操作与外发操作 | respond disable、customers delete、rules delete、application-connections delete、subscriptions delete、webhook-domains delete、webhook-queue delete、reports scheduled-delete、files delete、reports send-email、import | 仅限人机协同,需明确确认 |
rule-triggers decide、contain 和 subscriptions health --reenable 在添加 --confirm 前会进行预览;其他所有写入操作都会在调用后立即执行,因此应使用 --dry-run 预览。SaaS Alerts 未提供只读密钥或按客户隔离的密钥,因此最强的控制措施是 MCP 只读开关:设置 SAAS_ALERTS_MCP_READ_ONLY=1 后,saas-alerts_execute 只会运行 GET 端点,而三个工作流写入工具会拒绝 --confirm。完整详情(包括如何锁定访问)请参阅 governance.md。
状态
Beta 版。基于 SaaS Alerts 发布的 API 规范和本地模拟服务器构建并测试;尚未在实际的 SaaS Alerts 租户上运行。抢先体验:带上它参加我们的每周 Build Sessions,并在你自己的租户上运行。请在 compoundingteams.com/build-sessions 回复确认。
标准。 符合开放的 Agent Skills 规范(Anthropic,2025 年 12 月;40 多个 Agent)。兼容 MCP——可与任何支持 MCP 的 Agent 配合使用,包括 Hermes。支持 OpenClaw(frontmatter 已预先配置,等待 OpenClaw 发布)。
由 Servosity 维护。采用 Apache-2.0 许可。使用 CLI Printing Press 构建。上次更新:2026-10-20。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。