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 整合