SaaS Alerts

io.github.wyre-technology由 GitHub 账号 wyre-technology 发布v1.2.4更新于 Oct 24, 2026

MCP server for Kaseya SaaS Alerts — SaaS security monitoring for M365 & Google Workspace.

发布方自己的服务:AlertsBar

已验证STDIO仅桌面安全与监控商业与电商

概览

AI 生成的概览

面向 Kaseya SaaS Alerts 的 MCP 服务器,让助手查询 M365 与 Google Workspace 安全事件,并管理客户、设备、报告与账单。

可以做什么
  • 按严重级别、客户、用户或事件类型查询与统计安全事件,支持高级查询、滚动分页和建议处置动作
  • 列出、创建、更新和删除客户,并设置 IP、国家与账户白名单
  • 查询 MSP、合作伙伴与客户用户信息
  • 查看已映射、未映射和已忽略的设备及设备组织
  • 查看账单明细与账单日期历史
  • 列出、获取、创建和删除定时报告,读取合作伙伴资料与品牌设置
适用场景
适合托管服务商或安全团队让助手在对话中分诊 SaaS 安全告警、跨客户调查事件,或维护 SaaS Alerts 中的客户与设备记录。
运行要求
以本地进程(stdio)方式从已发布的容器镜像运行,或通过 HTTP 运行。stdio 或 AUTH_MODE=env 需在 SAAS_ALERTS_API_KEY 中提供 SaaS Alerts API 密钥;HTTP 模式还需 CONDUIT_S2S_SECRET 与 X-Gateway-S2S 签名,或使用网关模式由 X-SaaS-Alerts-API-Key 传入密钥。仅限桌面端。
安装前请注意
该 API 密钥可访问安全监控租户,请勿写入文件或日志。删除客户和定时报告不可恢复;确认依赖 MCP elicitation,客户端不支持时会直接执行,调用前务必核实。未设置真实 CONDUIT_S2S_SECRET 的 HTTP 模式仅供开发,切勿对外暴露。

安装

在 SourceWeft 中

  1. 打开 控制台中的 SaaS Alerts,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

saas-alerts-mcp

Model Context Protocol server for Kaseya SaaS Alerts — a SaaS security monitoring platform for M365 and Google Workspace events.

Part of the WYRE Technology MCP fleet.

Features

Exposes the full SaaS Alerts External Partner API (v0.20.0) through 30 MCP tools organized by domain:

DomainTools
eventsQuery/count security events by severity, customer, user, event type; advanced Elasticsearch queries; scroll pagination; recommended actions
customersList, get, create, update, delete customers; set IP/country and account whitelists
usersMSP user info, partner users, customer users
devicesUnify mapped/unmapped/ignored devices, device organizations
billingBilling details by date, billing date history
reportsList/get/create/delete scheduled reports
partnerPartner profile, branding settings

Write/destructive tools require user confirmation via MCP elicitation (fail-open: proceeds if client doesn't support elicitation).

Authentication

SaaS Alerts uses an API key sent as the api_key HTTP header.

Generate your API key in the SaaS Alerts UI under Settings → API Keys.

Copy .env.example. Leave CONDUIT_S2S_SECRET empty in that file and never commit a real value.

VariableRequiredDescription
SAAS_ALERTS_API_KEYFor stdio and AUTH_MODE=envSaaS Alerts API key. Gateway mode does not read it.
MCP_TRANSPORTNostdio (default) or http
AUTH_MODENogateway (Docker image and Compose default) or env. Gateway mode requires X-SaaS-Alerts-API-Key on each /mcp request and never falls back to SAAS_ALERTS_API_KEY.
CONDUIT_S2S_SECRETYes for HTTPService-to-service secret. The HTTP server logs an error and exits non-zero when this is empty or a known placeholder (changeme, secret, your-s2s-secret, and the other example values). Compose will not start when it is unset. The value is never logged.
MCP_ALLOW_INSECURE_DEVNoSet to 1 only for local development to start HTTP without CONDUIT_S2S_SECRET. The process logs a warning, does not enforce X-Gateway-S2S, and listens on 127.0.0.1 only. A wider MCP_HTTP_HOST (including 0.0.0.0) is overridden. A placeholder secret is still rejected.
MCP_HTTP_HOSTNoBind address when a real CONDUIT_S2S_SECRET is set. Defaults to 127.0.0.1. The container image sets 0.0.0.0. Without a real secret the listener is forced to 127.0.0.1.
MCP_HTTP_PORTNoHTTP port. Defaults to 8080.

/health and /healthz stay unauthenticated and do not read credentials. The stdio transport does not use CONDUIT_S2S_SECRET.

X-Gateway-S2S signing

With MCP_TRANSPORT=http and a real CONDUIT_S2S_SECRET, every /mcp request must include X-Gateway-S2S. A missing or invalid header returns 401 before any vendor credential is read.

The header value is t=<unix seconds>,v1=<hex hmac-sha256>:

  1. Set t to the current unix time in seconds.
  2. Sign the ASCII message t=<unix seconds> with HMAC-SHA256, using CONDUIT_S2S_SECRET as the key.
  3. Hex-encode the digest (64 lowercase hex characters) and send t=<unix seconds>,v1=<hex>.

The timestamp must be within 300 seconds of the server clock. Example:

js
import { createHmac } from 'node:crypto';
const t = Math.floor(Date.now() / 1000);const v1 = createHmac('sha256', process.env.CONDUIT_S2S_SECRET).update(`t=${t}`).digest('hex');const xGatewayS2s = `t=${t},v1=${v1}`;

Local / stdio mode

bash
export SAAS_ALERTS_API_KEY=your-api-keynode dist/index.js

HTTP mode

CONDUIT_S2S_SECRET is required. If it is empty, the process logs an error and exits non-zero.

bash
export CONDUIT_S2S_SECRET="$(openssl rand -hex 32)"export SAAS_ALERTS_API_KEY=your-api-keyexport MCP_TRANSPORT=httpexport AUTH_MODE=envexport MCP_HTTP_PORT=8080node dist/http.js

Local HTTP without a secret is development-only. It binds 127.0.0.1 even if MCP_HTTP_HOST is 0.0.0.0, and logs a warning:

bash
MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm run start:http

WYRE Gateway mode

When running behind the WYRE MCP Gateway, set AUTH_MODE=gateway (the image and Compose default). The gateway signs each request with X-Gateway-S2S and injects the API key via X-SaaS-Alerts-API-Key. A request missing that credential header returns 401 and does not use SAAS_ALERTS_API_KEY from the environment.

js
await fetch('http://127.0.0.1:8080/mcp', {  method: 'POST',  headers: {    'content-type': 'application/json',    accept: 'application/json, text/event-stream',    'x-gateway-s2s': xGatewayS2s,    'x-saas-alerts-api-key': apiKey,  },  body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'tools/list' }),});

Running with Docker

The image listens on 0.0.0.0 inside the container and defaults to AUTH_MODE=gateway. Publish the port on loopback and pass the S2S secret. In gateway mode the SaaS Alerts API key arrives on each request; it is not read from the environment.

bash
docker build -t saas-alerts-mcp .docker run \  -e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \  -p 127.0.0.1:8080:8080 \  saas-alerts-mcp

Compose refuses to start when CONDUIT_S2S_SECRET is unset, sets AUTH_MODE=gateway, publishes 127.0.0.1:8080:8080, and does not pass SAAS_ALERTS_API_KEY into the gateway service:

bash
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up

Single-tenant HTTP (AUTH_MODE=env) still requires the S2S secret, then uses SAAS_ALERTS_API_KEY:

bash
docker run \  -e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \  -e AUTH_MODE=env \  -e SAAS_ALERTS_API_KEY=your-key \  -p 127.0.0.1:8080:8080 \  ghcr.io/wyre-ai/saas-alerts-mcp:latest

Development

bash
npm installnpm run buildnpm testnpm run lintnode scripts/lint-destructive-warnings.mjs src

Destructive tool confirmation

Tools that permanently delete data (customer delete, scheduled report delete) carry:

  • ⚠ DESTRUCTIVE — IRREVERSIBLE description prefix
  • annotations.destructiveHint: true
  • Elicitation confirmation guard (additive — proceeds if client doesn't support elicitation)

Always confirm with the user before invoking these tools.

License

Apache-2.0 — see LICENSE.

来源:README.md,提交 a3e43b5

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.2.4最新Sep 16, 2026

评分

已满足适用检查项的 40%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。

其他 Alerts 集成