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 分