Kaseya VSA

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

MCP server for Kaseya VSA RMM — agents, patches, procedures, alarms, tickets.

概览

AI 生成的概览

面向 Kaseya VSA RMM 的 MCP 服务器,让助手查看受管终端、软硬件清单、补丁、告警与工单,并执行过程脚本。

可以做什么
  • 列出并查看受管终端,含显示在线状态、操作系统与 IP 的交互式设备卡片
  • 读取某终端的已安装软件与硬件清单
  • 查询待安装与已安装补丁状态,并强制下发补丁部署
  • 列出并执行终端过程脚本(procedures)
  • 列出未处理告警、服务台工单、组织与机器组
适用场景
适合 IT 管理员或托管服务商,希望助手回答关于 Kaseya VSA 终端、补丁状态、告警和工单的问题,或在受管机器上触发补丁部署与过程脚本。
运行要求
以 stdio 在本地运行(npm 构建启动或容器镜像)。需要包含 /api/v1.0 的 KASEYA_VSA_TENANT_URL,以及 KASEYA_VSA_USERNAME 与 KASEYA_VSA_PASSWORD,或改用 KASEYA_VSA_K1_TOKEN。HTTP 模式还需 CONDUIT_S2S_SECRET;gateway 模式从 X-Kaseya-VSA-* 请求头读取 Kaseya 凭据。
安装前请注意
需保存可控制受管终端的 RMM 凭据(KASEYA_VSA_PASSWORD 或 KASEYA_VSA_K1_TOKEN)。下发补丁与执行过程脚本会改动机器,属破坏性操作,服务器会要求确认。HTTP 模式需 CONDUIT_S2S_SECRET,不得提交到仓库或使用占位值;MCP_ALLOW_INSECURE_DEV=1 会关闭 S2S 校验,仅限本地开发。

安装

在 SourceWeft 中

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

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

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Kaseya VSA MCP Server

[Release] [License: Apache 2.0]

Model Context Protocol (MCP) server for the Kaseya VSA RMM API. Exposes managed endpoints, software / hardware inventory, patch state, agent procedures, alarms, Service Desk tickets, organizations, and machine groups to AI assistants.

Tools

ToolDescription
kaseya_vsa_list_agentsList managed endpoints (agents). Optional $filter.
kaseya_vsa_get_agentGet an agent's details by ID (renders as an interactive card in MCP Apps hosts).
kaseya_vsa_get_software_inventoryInstalled software for an agent.
kaseya_vsa_get_hardware_inventoryHardware audit for an agent.
kaseya_vsa_get_patch_statusPending and installed patches for an agent.
kaseya_vsa_deploy_patches_nowForce a patch deploy on an agent (destructive — confirmation required).
kaseya_vsa_list_proceduresAgent procedures available to run.
kaseya_vsa_run_procedureExecute a procedure on an agent (destructive — confirmation required).
kaseya_vsa_list_alarmsOpen alarms (optional state filter; date-window elicitation if missing).
kaseya_vsa_list_ticketsService Desk tickets (returns a friendly message if SD module isn't enabled).
kaseya_vsa_list_organizationsTenant organizations.
kaseya_vsa_list_machine_groupsMachine group hierarchy.

When the user omits required filters or runs a destructive action, the server uses MCP elicitation to prompt for choices or confirm.

Interactive device card (MCP Apps)

kaseya_vsa_get_agent renders as a read-only interactive device card in MCP Apps hosts (Claude Desktop/web), showing the endpoint's name, online status, organization, machine group, OS, IP address, and last check-in. The card is neutral by default, brandable via window.__BRAND__ injection or MCP_BRAND_* env vars (MCP_BRAND_NAME, MCP_BRAND_LOGO_URL, MCP_BRAND_PRIMARY_COLOR, MCP_BRAND_ACCENT_COLOR, MCP_BRAND_BG, MCP_BRAND_TEXT) applied at serve time. Plain-JSON behavior is unchanged in other hosts. After editing ui/, regenerate the embedded bundle with npm run build:ui.

Configuration

Copy .env.example and set the variables below.

VariableRequiredDescription
KASEYA_VSA_TENANT_URLFor stdio and AUTH_MODE=envFull base URL incl. /api/v1.0. The Compose gateway service does not load this.
KASEYA_VSA_USERNAMEFor stdio and AUTH_MODE=envLocal-auth username (with password). The Compose gateway service does not load this.
KASEYA_VSA_PASSWORDFor stdio and AUTH_MODE=envLocal-auth password (secret). The Compose gateway service does not load this.
KASEYA_VSA_K1_TOKENFor stdio and AUTH_MODE=envKaseya One SSO token (alternative to username + password). The Compose gateway service does not load this.
MCP_TRANSPORTNostdio (default) or http
AUTH_MODENogateway (Docker image and Compose default) or env (code default when unset). Gateway mode requires the X-Kaseya-VSA-* headers on each /mcp request and never falls back to KASEYA_VSA_*. env uses those variables only after S2S auth succeeds.
CONDUIT_S2S_SECRETYes for HTTPService-to-service secret. Generate with openssl rand -hex 32. The HTTP server logs an error and exits non-zero when this is empty or a known placeholder (changeme, your-s2s-secret, secret, placeholder, an unresolved ${...} value, and similar public examples). Compose will not start without it. Never commit a real value. The value is never logged.
MCP_ALLOW_INSECURE_DEVNoSet to exactly 1 only for local development to start HTTP without CONDUIT_S2S_SECRET. The process logs a warning, does not enforce X-Gateway-S2S, and forces the listener onto 127.0.0.1 even if MCP_HTTP_HOST is a wider address. A known placeholder secret is still refused.
MCP_HTTP_HOSTNoBind address when MCP_TRANSPORT=http. Defaults to 127.0.0.1 when unset. A configured CONDUIT_S2S_SECRET honors this value. The container image sets 0.0.0.0.
MCP_HTTP_PORTNoHTTP port. Defaults to 8080.

Either the username + password pair OR KASEYA_VSA_K1_TOKEN is required for stdio and AUTH_MODE=env.

/health stays unauthenticated and does not read credentials. The stdio transport does not use CONDUIT_S2S_SECRET.

HTTP authentication

With MCP_TRANSPORT=http and CONDUIT_S2S_SECRET set, every /mcp request must include X-Gateway-S2S. The check is verifyS2sHeader in src/s2s-verify.ts: the header value is t=<unix seconds>,v1=<hex>, where the hex is HMAC-SHA256 of the literal string t=<unix seconds> keyed with CONDUIT_S2S_SECRET (64 lowercase hex characters). The timestamp must be within 300 seconds of the server clock. A missing or invalid header returns HTTP 401 before vendor credentials are read.

In AUTH_MODE=gateway, /mcp also requires X-Kaseya-VSA-Tenant-Url plus either (X-Kaseya-VSA-Username and X-Kaseya-VSA-Password) or X-Kaseya-VSA-K1-Token. Those headers are the only credential source for that request. A request missing them returns 401 and does not fall back to KASEYA_VSA_* in the process environment.

Each accepted request creates a fresh server instance with isolated credentials — no cross-tenant process.env pollution.

Local development

bash
npm installnpm run buildKASEYA_VSA_TENANT_URL=https://vsa.example.com/api/v1.0 \  KASEYA_VSA_USERNAME=... \  KASEYA_VSA_PASSWORD=... \  npm start

HTTP refuses to start until CONDUIT_S2S_SECRET is set:

bash
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" MCP_TRANSPORT=http npm startcurl http://127.0.0.1:8080/health

Local HTTP without a secret is development-only. It binds 127.0.0.1 only and logs a warning. A non-loopback MCP_HTTP_HOST is ignored and the override is logged:

bash
MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm start

Docker

The image listens on 0.0.0.0 inside the container (MCP_HTTP_HOST) and defaults to AUTH_MODE=gateway. Publish the port on loopback and pass the S2S secret. In gateway mode, Kaseya credentials arrive on each request as headers; they are not read from the environment.

bash
docker build -t kaseya-vsa-mcp .docker run --rm \  -e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \  -p 127.0.0.1:8080:8080 \  kaseya-vsa-mcp

Compose refuses to start when CONDUIT_S2S_SECRET is unset, sets AUTH_MODE=gateway, does not inject static KASEYA_VSA_* credentials, and publishes 127.0.0.1:8080:8080:

bash
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up

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

bash
docker run --rm \  -e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \  -e AUTH_MODE=env \  -e KASEYA_VSA_TENANT_URL=https://vsa.example.com/api/v1.0 \  -e KASEYA_VSA_USERNAME=... \  -e KASEYA_VSA_PASSWORD=... \  -p 127.0.0.1:8080:8080 \  kaseya-vsa-mcp

License

Apache-2.0

来源:README.md,提交 27c3dc7

工具

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

版本历史

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

评分

已满足适用检查项的 50%

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

  • 近 30 天内可连通25 分

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

  • 已声明认证方式10 分

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

  • 已列出工具15 分

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

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