Skip to content
plugmcp
DirectorySkillsCategoriesBlog
EN/中文
Sign inSign up
Home/Servers/SaaS Alerts

SaaS Alerts

I
by io.github.WYRE-AI

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

Power your agent

Add this server

The publisher's own command. Not a PlugMCP endpoint.

Local command
docker run -i --rm ghcr.io/wyre-ai/saas-alerts-mcp:v1.2.8
Credentials from the publisher
  • SAAS_ALERTS_API_KEY — SaaS Alerts API key (sent as the api_key header). Required.
  • MCP_TRANSPORT — Transport mode. 'stdio' for local CLI; image defaults to 'http' for gateway hosting.
  • AUTH_MODE — 'env' reads vars locally; 'gateway' expects header injection from the WYRE MCP Gateway.
  • LOG_LEVEL — Log verbosity: debug, info, warn, error
Provider
Claude Code
SAAS_ALERTS_API_KEY=<secret> MCP_TRANSPORT=<value> AUTH_MODE=<value> LOG_LEVEL=<value> claude mcp add io.github.wyre-ai-saas-alerts-mcp -- docker run -i --rm ghcr.io/wyre-ai/saas-alerts-mcp:v1.2.8

Run in a terminal.

Claude Desktop
{
  "mcpServers": {
    "io.github.wyre-ai-saas-alerts-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/wyre-ai/saas-alerts-mcp:v1.2.8"
      ],
      "env": {
        "SAAS_ALERTS_API_KEY": "<secret>",
        "MCP_TRANSPORT": "<value>",
        "AUTH_MODE": "<value>",
        "LOG_LEVEL": "<value>"
      }
    }
  }
}

claude_desktop_config.json

Step-by-step: add this in Claude

Remote URL or a command on your machine? How the two installs differ

Run on PlugMCP

Host a copy with our keys and logs.

A new server you create. It is not this listing's official endpoint. Use the publisher install when you want their URL and their credentials.

Launch

Related MCP

View more
  • Firecrawl🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.
  • N
    NotionToken-auth Notion MCP: pages, databases, blocks, comments, files. Runs headless in CI and agents.
  • Context7Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors

Related skills

View all
  • reaReverse engineer anything with agents, from app behavior down to native binaries.
  • rea-changelog-updatePrepare or rewrite REA release changelogs and GitHub release notes from pinned Git history, with verified contributor thanks and Release Please synchronization.
  • rea-tool-designDesign or change REA investigation tools, CLI/MCP contracts, provider capabilities, and Evidence semantics.

Questions

How do I install SaaS Alerts?
Copy the stdio config for Cursor, Claude Desktop, Claude Code, or VS Code on this page. It uses the publisher's install, not a PlugMCP proxy.
Does SaaS Alerts need an API key?
The publisher lists these environment variables: SAAS_ALERTS_API_KEY, MCP_TRANSPORT, AUTH_MODE, LOG_LEVEL.
What transport does SaaS Alerts use?
SaaS Alerts runs locally over stdio.
When was SaaS Alerts last checked?
Last checked 2026-10-16. MCP server for Kaseya SaaS Alerts — SaaS security monitoring for M365 & Google Workspace.

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

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:

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

export SAAS_ALERTS_API_KEY=your-api-key
node dist/index.js

HTTP mode

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

export CONDUIT_S2S_SECRET="$(openssl rand -hex 32)"
export SAAS_ALERTS_API_KEY=your-api-key
export MCP_TRANSPORT=http
export AUTH_MODE=env
export MCP_HTTP_PORT=8080
node 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:

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.

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.

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:

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:

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

npm install
npm run build
npm test
npm run lint
node 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.

How do I install SaaS Alerts?
Copy the stdio config for Cursor, Claude Desktop, Claude Code, or VS Code on this page. It uses the publisher's install, not a PlugMCP proxy.
Does SaaS Alerts need an API key?
The publisher lists these environment variables: SAAS_ALERTS_API_KEY, MCP_TRANSPORT, AUTH_MODE, LOG_LEVEL.
What transport does SaaS Alerts use?
SaaS Alerts runs locally over stdio.
When was SaaS Alerts last checked?
Last checked 2026-10-16. MCP server for Kaseya SaaS Alerts — SaaS security monitoring for M365 & Google Workspace.

No tool list yet. Remote servers get one after the first health check.

plugmcp

Plug any tool into any agent. MCP servers for people who do not write servers. Gateway for volume, n8n for apps.

  • github.com/TODO
  • x.com/TODO
  • linkedin.com/company/TODO

PlugMCP, 2026

Product
  • Browse
  • Install
  • Host your own
  • Pricing
  • Voice mode
  • Browser
Directory
  • All MCP servers
  • MCP Apps
  • Tools
  • Agent skills
  • Categories
  • New
  • Voice
  • Submit a server
Developers
  • Docs
  • Blog
  • Club
  • Work with us
  • What is MCP
  • What is WebMCP
  • Status
Company
  • About
  • Contact
  • Terms
  • Privacy
  • DPA