mcpField
K
Kaseya BMS

Kaseya BMS

本地服务
github.com商业与营销0今天更新

关于 Kaseya BMS

Kaseya BMS MCP 服务面向使用 Kaseya BMS PSA 的团队,让 AI 助手查询工单、客户和服务数据,也可创建工单及添加备注。缺少筛选条件或执行有破坏性的操作时,会通过 MCP elicitation 请求选择或确认。

主要功能

  1. 01列出并获取工单
  2. 02创建工单并添加备注
  3. 03查询时间记录、客户、联系人和合同
  4. 04浏览服务目录并搜索知识库
  5. 05在 MCP Apps 中呈现交互式工单卡片

适用场景

  1. 01查看工单详情并按需追加内部备注
  2. 02按日期范围汇总时间记录
  3. 03查询客户、联系人或合同信息
  4. 04从服务目录和知识库查找相关条目

MCP 相关

通过 MCP 工具开放 Kaseya BMS PSA 的工单、账户、联系人、合同、时间记录、服务目录和知识库操作。使用 elicitation 收集缺失的筛选条件或确认有破坏性的操作;支持在 MCP Apps 主机中显示工单卡片。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"wyre-ai-kaseya-bms": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"KASEYA_BMS_TENANT_SUBDOMAIN",
"-e",
"KASEYA_BMS_API_TOKEN",
"-e",
"KASEYA_BMS_K1_TOKEN",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-ai/kaseya-bms-mcp:v1.1.6"
],
"env": {
"KASEYA_BMS_TENANT_SUBDOMAIN": "<KASEYA_BMS_TENANT_SUBDOMAIN>",
"KASEYA_BMS_API_TOKEN": "<KASEYA_BMS_API_TOKEN>",
"KASEYA_BMS_K1_TOKEN": "<KASEYA_BMS_K1_TOKEN>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
启动命令docker run -i --rm -e KASEYA_BMS_TENANT_SUBDOMAIN -e KASEYA_BMS_API_TOKEN -e KASEYA_BMS_K1_TOKEN -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/kaseya-bms-mcp:v1.1.6
需要配置的环境变量
KASEYA_BMS_TENANT_SUBDOMAINTenant subdomain (e.g. 'yourcompany' for yourcompany.bms.kaseya.com)
KASEYA_BMS_API_TOKEN密钥BMS API token (omit if using Kaseya One token)
KASEYA_BMS_K1_TOKEN密钥Kaseya One SSO token (alternative to API token)
MCP_TRANSPORTTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.
AUTH_MODE密钥Credential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.
LOG_LEVELLog verbosity: debug, info, warn, error

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/wyre-ai/kaseya-bms-mcp:v1.1.6

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Kaseya BMS MCP 服务

Release License: Apache 2.0

适用于 Kaseya BMS PSA API 的 Model Context Protocol(MCP)服务。 向 AI 助手提供工单、账户、联系人、合同、工时记录、服务 目录和知识库。

工具

工具描述
kaseya_bms_list_tickets列出工单。可选 $filter;如果省略,则选择状态。
kaseya_bms_get_ticket按 ID 获取工单。
kaseya_bms_create_ticket创建新工单(有破坏性操作——需要确认)。
kaseya_bms_add_ticket_note向工单追加备注(有破坏性操作——需要确认)。
kaseya_bms_list_time_entries按日期范围列出工时记录(24 小时 / 7 天 / 30 天 / 自定义 / 全部)。
kaseya_bms_list_accounts账户(客户)。
kaseya_bms_list_contacts联系人。
kaseya_bms_list_contracts合同。
kaseya_bms_list_service_catalog服务目录条目。
kaseya_bms_search_knowledge_base搜索知识库。

如果用户省略必需的筛选条件或执行有破坏性的操作,服务会使用 MCP elicitation 提示用户选择或确认。

交互式工单卡片(MCP Apps)

在 MCP Apps 宿主(Claude Desktop/web)中,kaseya_bms_get_ticket 会呈现为交互式卡片,支持通过 kaseya_bms_add_ticket_note 在卡片内往返添加备注(始终仅发布为内部备注);在其他宿主中,纯 JSON 行为保持不变。卡片默认采用中性样式,可通过注入 window.__BRAND__ 或设置 MCP_BRAND_* 环境变量 (MCP_BRAND_NAME、MCP_BRAND_LOGO_URL、MCP_BRAND_PRIMARY_COLOR、 MCP_BRAND_ACCENT_COLOR、MCP_BRAND_BG、MCP_BRAND_TEXT)进行品牌定制,无需重新构建。 编辑 ui/ 后,使用 npm run build:ui 重新生成嵌入式 bundle。

配置

复制 .env.example。Stdio 和 AUTH_MODE=env 会读取 Kaseya BMS 变量。Gateway 模式不会读取。

变量必需描述
KASEYA_BMS_TENANT_SUBDOMAIN对 stdio 和 AUTH_MODE=env 必需租户子域名(例如 yourcompany)
KASEYA_BMS_API_TOKEN对 stdio 和 AUTH_MODE=env,以下凭据之一BMS API 令牌
KASEYA_BMS_K1_TOKEN对 stdio 和 AUTH_MODE=env,以下凭据之一Kaseya One SSO 令牌
MCP_TRANSPORT否stdio(默认)或 http
AUTH_MODE否env(默认)或 gateway。Gateway 模式要求每个 /mcp 请求都携带 X-Kaseya-BMS-Tenant-Subdomain,以及 X-Kaseya-BMS-API-Token 或 X-Kaseya-BMS-K1-Token,且绝不会回退到 KASEYA_BMS_*。
CONDUIT_S2S_SECRETHTTP 模式必需服务间密钥。如果该值为空或为已知占位值,HTTP 服务会记录错误并以非零状态退出。Compose 未设置该值时不会启动。切勿提交真实值。可使用 openssl rand -hex 32 生成。
MCP_ALLOW_INSECURE_DEV否仅在本地开发时设为 1,以便在未设置 CONDUIT_S2S_SECRET 的情况下启动 HTTP。进程会记录警告,不会强制执行 X-Gateway-S2S,且仅绑定 127.0.0.1。如果 MCP_HTTP_HOST 不是环回地址,则会拒绝启动。已知占位密钥仍会被拒绝。
MCP_HTTP_HOST否设置了真实 CONDUIT_S2S_SECRET 时使用的绑定地址。未设置时使用 0.0.0.0,这是容器镜像设置的值,因此容器部署会在容器内的所有接口上监听。未设置密钥时,开发绕过模式会改为绑定 127.0.0.1。
MCP_HTTP_PORT否HTTP 端口。默认为 8080。

/health 无需身份验证,也不会读取凭据。Stdio 传输不会使用 CONDUIT_S2S_SECRET。

HTTP 身份验证

设置 MCP_TRANSPORT=http 和 CONDUIT_S2S_SECRET 后,每个 /mcp 请求都必须包含 X-Gateway-S2S。其值为 t=<unix seconds>,v1=<hex>,其中 v1 是以 CONDUIT_S2S_SECRET 为密钥、对确切字符串 t=<unix seconds> 计算的 HMAC-SHA256(64 个小写十六进制字符)。时间戳必须在服务器时钟的 300 秒范围内。缺少标头或标头无效时会返回 401。该密钥绝不会写入日志。

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}`;

在 AUTH_MODE=gateway 模式下,/mcp 还要求提供 X-Kaseya-BMS-Tenant-Subdomain,以及 X-Kaseya-BMS-API-Token 或 X-Kaseya-BMS-K1-Token。这些标头是该请求唯一的凭据来源。缺少这些标头的请求会返回 401,且不会从环境中读取 KASEYA_BMS_*。每个请求都会创建一个凭据相互隔离的全新服务实例。

Docker Compose

仓库中提交的 Compose 服务采用网关模式。它发布 127.0.0.1:8080:8080,要求设置 CONDUIT_S2S_SECRET,且不设置 KASEYA_BMS_TENANT_SUBDOMAIN、KASEYA_BMS_API_TOKEN、KASEYA_BMS_K1_TOKEN 或 env_file。镜像构建会从 npmrc 构建密钥中读取 GitHub Packages 凭据(仓库的 .npmrc 仅设置注册表)。

CONDUIT_S2S_SECRET="$(openssl rand -hex 32)" docker compose up --build

单租户 HTTP(AUTH_MODE=env)仍要求提供 S2S 密钥,然后使用 KASEYA_BMS_*:

docker build -t kaseya-bms-mcp .
docker run --rm \
  -e CONDUIT_S2S_SECRET="$(openssl rand -hex 32)" \
  -e AUTH_MODE=env \
  -e KASEYA_BMS_TENANT_SUBDOMAIN=yourcompany \
  -e KASEYA_BMS_API_TOKEN=... \
  -p 127.0.0.1:8080:8080 \
  kaseya-bms-mcp

本地开发

npm install
npm run build
KASEYA_BMS_TENANT_SUBDOMAIN=yourcompany \
  KASEYA_BMS_API_TOKEN=... \
  npm start

在 CONDUIT_S2S_SECRET 为真实密钥之前,HTTP 不会启动:

MCP_TRANSPORT=http CONDUIT_S2S_SECRET="$(openssl rand -hex 32)" npm start
curl http://127.0.0.1:8080/health

不设置密钥的本地 HTTP 仅用于开发环境。它会绑定到 127.0.0.1 并记录警告:

MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm start

许可证

Apache-2.0

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。