关于 ThreatLocker
ThreatLocker MCP 服务让 AI 助手通过 ThreatLocker Portal API 管理计算机、审批请求、审计日志和组织,适用于需要自然语言访问这些管理数据的团队。它采用无状态请求,并提供按域导航和多租户网关模式。
主要功能
- 01列出计算机并查看详情
- 02查询计算机签到历史
- 03筛选审批请求并查看待处理数
- 04搜索审计日志及文件历史
- 05列出子组织并查询组织信息
- 06按域导航工具
适用场景
- 01核查设备信息和签到记录
- 02审阅待审批的应用请求
- 03调查审计操作与文件历史
- 04浏览子组织并准备计算机迁移
MCP 相关
它作为 MCP 服务将 ThreatLocker Portal API 的计算机、审批、审计和组织操作暴露给 MCP 客户端。支持 stdio 和 HTTP,以及通过请求头传入凭据的网关模式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e THREATLOCKER_API_KEY -e THREATLOCKER_ORGANIZATION_ID -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-technology/threatlocker-mcp:v1.3.6THREATLOCKER_API_KEY密钥ThreatLocker API keyTHREATLOCKER_ORGANIZATION_IDThreatLocker organization IDMCP_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+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/wyre-technology/threatlocker-mcp:v1.3.6stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
ThreatLocker MCP Server
一个模型上下文协议(MCP)服务,可让 AI 助手访问 ThreatLocker Portal API。通过自然语言交互管理计算机、审批请求、审计日志和组织。
功能
- 无状态架构:无需会话状态,每次请求都会建立新连接
- 决策树导航:使用
threatlocker_navigate浏览各个域 - 网关模式:通过 HTTP 标头支持多租户
- 引导支持:针对缺失参数提供交互式提示
- 全面的错误处理:提供详细的错误消息和日志
- Docker 支持:可用于生产环境的容器化方案
工具
导航
threatlocker_navigate- 导航至某个域,查看可用工具threatlocker_status- 检查 API 连接状态和可用域
计算机
threatlocker_computers_list- 使用筛选条件列出计算机(搜索、组、分页)threatlocker_computers_get- 获取详细的计算机信息threatlocker_computers_get_checkins- 获取计算机签到历史记录
计算机组
threatlocker_computer_groups_list- 使用筛选条件列出计算机组threatlocker_computer_groups_dropdown- 获取用于下拉选项的计算机组
审批请求
threatlocker_approvals_list- 使用状态筛选条件列出审批请求threatlocker_approvals_get- 获取详细的审批请求信息threatlocker_approvals_pending_count- 获取待处理审批数量threatlocker_approvals_get_permit_application- 获取许可申请详情
审计日志
threatlocker_audit_search- 使用筛选条件搜索审计日志条目threatlocker_audit_get- 根据搜索行中的eActionLogId获取一条审计日志条目(已弃用的别名:actionLogId)threatlocker_audit_file_history- 获取文件的审计历史记录。需要提供fullPath,以及hostname或computerId
组织
threatlocker_organizations_list_children- 列出子组织threatlocker_organizations_get_auth_key- 获取组织身份验证密钥threatlocker_organizations_for_move_computers- 获取用于移动计算机的组织
配置
环境变量
Stdio 模式(直接 API 访问)
THREATLOCKER_API_KEY=your_api_key_here
THREATLOCKER_ORGANIZATION_ID=your_org_id_here
MCP_TRANSPORT=stdio
网关模式(多租户)
AUTH_MODE=gateway
MCP_TRANSPORT=http
MCP_HTTP_PORT=8080
# Required. The HTTP server exits non-zero if this is empty.
CONDUIT_S2S_SECRET=gateway-provisioned-secret
# Optional. Unset binds 127.0.0.1. The container image sets 0.0.0.0.
# MCP_HTTP_HOST=127.0.0.1
HTTP 传输需要设置 CONDUIT_S2S_SECRET。如果未设置,进程会记录错误并以非零状态码退出。仅用于本地开发时,可设置 MCP_ALLOW_INSECURE_DEV=1,让服务仍然启动并记录醒目警告;生产环境中请勿设置此标志。密钥绝不会写入日志。
如果未设置 MCP_HTTP_HOST,服务会绑定到 127.0.0.1。Dockerfile 会设置 MCP_HTTP_HOST=0.0.0.0,使进程在容器内监听;请在 localhost 上发布该端口。
网关模式标头
以网关模式运行时,每个请求都必须包含以下标头:
X-Gateway-S2S:来自网关的服务间验证信息(t=<unix>,v1=<hmac>)。设置了CONDUIT_S2S_SECRET时,不包含有效标头的请求会被拒绝,并返回 401。X-Threatlocker-Api-Key:你的 ThreatLocker API 密钥(必需)。不包含此密钥的请求会被拒绝,并返回 401,且不会回退到THREATLOCKER_API_KEY。X-Threatlocker-Organization-Id:你的组织 ID(可选;API 默认使用该密钥对应的主组织)
/health 和 /healthz 无需身份验证,也不会读取凭据。Stdio 传输不会使用 CONDUIT_S2S_SECRET。
日志记录
LOG_LEVEL=debug|info|warn|error # Default: info
本地开发
- 克隆代码库:
git clone https://github.com/WYRE-AI/threatlocker-mcp.git
cd threatlocker-mcp
- 安装依赖项:
npm install
- 设置环境变量:
cp .env.example .env
# Edit .env with your ThreatLocker credentials
- 构建并运行:
npm run build
npm start
# Or for development with hot reload:
npm run dev
- 测试服务:
# Stdio mode
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | npm start
# HTTP mode. CONDUIT_S2S_SECRET is required unless you set
# MCP_ALLOW_INSECURE_DEV=1 (local development only; logs a loud warning).
# The server binds 127.0.0.1 unless MCP_HTTP_HOST is set.
MCP_TRANSPORT=http AUTH_MODE=gateway CONDUIT_S2S_SECRET=dev-secret npm run start:http
curl http://127.0.0.1:8080/health
Docker
使用 Docker Compose
# Required. Compose will not start if this is unset or empty.
export CONDUIT_S2S_SECRET=gateway-provisioned-secret
# Pull and run latest image. The published port is 127.0.0.1:8080.
docker compose up -d
# Or build locally
docker compose -f docker-compose.dev.yml up --build
直接使用 Docker
# Gateway mode (recommended). The container listens on 0.0.0.0 inside
# the network namespace; publish it on localhost only. The process
# exits if CONDUIT_S2S_SECRET is empty.
docker run -d \
--name threatlocker-mcp \
-p 127.0.0.1:8080:8080 \
-e AUTH_MODE=gateway \
-e CONDUIT_S2S_SECRET=gateway-provisioned-secret \
ghcr.io/wyre-ai/threatlocker-mcp:latest
# Stdio mode
docker run -d \
--name threatlocker-mcp \
-e THREATLOCKER_API_KEY=your_key \
-e THREATLOCKER_ORGANIZATION_ID=your_org_id \
-e MCP_TRANSPORT=stdio \
ghcr.io/wyre-ai/threatlocker-mcp:latest
架构
目录结构
src/
├── domains/ # Domain-specific handlers
│ ├── computers.ts
│ ├── computer_groups.ts
│ ├── approval_requests.ts
│ ├── audit_log.ts
│ ├── organizations.ts
│ ├── navigation.ts
│ └── index.ts
├── utils/ # Utilities
│ ├── client.ts # ThreatLocker API client
│ ├── logger.ts # Structured logging
│ ├── types.ts # TypeScript types
│ ├── server-ref.ts # Server reference for elicitation
│ └── elicitation.ts # Interactive prompts
├── server.ts # MCP server creation
├── index.ts # Stdio transport entry
└── http.ts # HTTP transport entry
设计模式
- 领域处理器:每个 API 区域都有自己的处理器,包含
getTools()和handleCall() - 延迟加载:按需导入领域处理器
- 新建连接:每个 HTTP 请求都会创建新的服务端实例,以实现无状态操作
- 凭据失效处理:凭据更改时重置客户端
- 交互式补全框架:通过交互式提示词补充缺失参数
许可证
Apache-2.0——详情请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。