关于 Teramind
Teramind MCP 服务将员工监控平台中的计算机、用户、部门、告警及规则配置元数据提供给 AI 助手和 WYRE Conduit。它采用刻意收窄的只读范围,不提供实际监控内容。
主要功能
- 01查询计算机和用户清单
- 02查看部门元数据
- 03按时间及对象筛选告警
- 04读取异常规则与行为策略
- 05查看监控配置档案
适用场景
- 01核查受监控设备和用户
- 02调查特定时间段的规则告警
- 03检查已配置的行为策略
- 04查看监控数据类型配置
MCP 相关
作为 MCP 服务,它向客户端提供 Teramind API 的只读元数据工具。连接需要账户访问令牌和对应实例 URL。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e TERAMIND_ACCESS_TOKEN -e TERAMIND_INSTANCE_URL -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/teramind-mcp:v1.0.1TERAMIND_ACCESS_TOKEN密钥Teramind Access Token (JWT, generated in the dashboard's Access Tokens menu). See README's Credential scope section before minting one.TERAMIND_INSTANCE_URLPer-instance Teramind dashboard base URL, e.g. https://yourcompany.teramind.co.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+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/wyre-ai/teramind-mcp:v1.0.1stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Teramind MCP 服务
面向 AI 助手和 WYRE Conduit 网关的 MCP 服务,用于访问 Teramind 的内部威胁/员工监控 API,涵盖计算机清单、Agent(用户)清单、部门、警报、异常规则和行为策略配置,以及监控配置文件元数据。
此连接器在设计上涉及大量 PII(内部威胁/员工监控产品),合并前需要进行安全审查——请参阅下文的 范围 和 凭据范围。
身份验证
Teramind 使用 JWT 访问令牌进行身份验证,该令牌由用户在 Teramind 控制面板中自行生成(用户菜单 -> 访问令牌),并通过 x-access-token 标头发送。此处没有 OAuth 流程。
Teramind 的 API 按客户实例提供(云端或本地/私有云)——不像此目录中的大多数其他连接器,它没有共享的多租户基础 URL。每组凭据还包含客户自己的实例 URL(例如 https://yourcompany.teramind.co)。在网关模式下,两者通过 X-Teramind-Access-Token / X-Teramind-Instance-Url 标头随每个请求传入;在本地/stdio 模式下,则从 TERAMIND_ACCESS_TOKEN / TERAMIND_INSTANCE_URL 中读取一次。
配置
| 环境变量 | 说明 |
|---|---|
TERAMIND_ACCESS_TOKEN | 由 Teramind 控制面板的访问令牌菜单签发的 JWT 访问令牌。 |
TERAMIND_INSTANCE_URL | 客户的 Teramind 实例基础 URL,例如 https://yourcompany.teramind.co。 |
MCP_TRANSPORT | stdio(默认)或 http。 |
AUTH_MODE | env(默认,从上述变量读取)或 gateway(凭据通过 X-Teramind-Access-Token / X-Teramind-Instance-Url 随每个请求传入,由 Conduit 网关注入)。 |
CONDUIT_S2S_SECRET | 设置后,HTTP 传输会要求每个 /mcp 请求都携带有效的 X-Gateway-S2S 标头(Conduit 边车身份验证)。 |
LOG_LEVEL | debug | info(默认)| warn | error。 |
工具
计算机
teramind_list_computers- 列出受监控的计算机(主机名、FQDN、MAC/IP、操作系统、监控状态)。teramind_get_computer- 获取单台计算机的完整详细信息。
Agent(用户)
teramind_list_agents- 列出受监控的 Agent(Teramind 对受监控员工/用户身份的称呼):ID、姓名、电子邮件、头像、在线状态。teramind_get_agent- 获取单个 Agent 的完整详细信息。
部门
teramind_list_departments- 列出部门(组织结构元数据)。teramind_get_department- 获取单个部门的完整详细信息。
警报
teramind_list_alerts- 列出指定时间范围内触发的规则违规事件,可按 Agent/计算机/部门筛选。
异常规则
teramind_list_anomaly_rules- 列出已配置的基于 ML 的异常检测规则(类型、风险系数、触发条件)。teramind_get_anomaly_rule- 获取单条异常规则的完整详细信息。teramind_list_anomaly_rule_tags- 列出可用于分类异常规则的标签。
行为策略
teramind_list_behavior_policies- 列出行为策略(每项策略监控的活动类型及其匹配条件)。teramind_get_behavior_policy- 获取单项行为策略的完整详细信息。teramind_list_behavior_policy_groups- 列出行为策略组(用于组织行为策略的容器)。teramind_get_behavior_policy_group- 获取单个行为策略组的完整详细信息。
监控
teramind_list_monitoring_profiles- 列出监控配置文件(配置为采集的数据类型,以及采集对象)。
账户
teramind_get_account- 获取经过身份验证的账户自身设置(用于检查凭据是否正常)。
范围
这是一个刻意保持狭窄、只读的 v1 功能面。鉴于内部威胁/员工监控产品的敏感性,其范围比本目录通常的标准更加保守。 Teramind 的文档化 API(直接从其发布的 Postman 集合 apidoc.dev.teramind.co 获取)涵盖数十个产品领域(监控、BI 报告、时间跟踪、排班、生产力分类、LDAP、任务管理、排班),共有 239 个操作。此连接器实现了 16 个:仅限计算机/用户/会话清单、部门元数据以及规则/警报配置的字面 HTTP GET 读取操作。鉴于员工监控数据的敏感性,无论 HTTP 方法为何,Conduit 网关都会将每个工具归类为 isAdmin: true。
不存在用于会话清单的字面 GET 端点。 Teramind 的会话数据(Sessions report、Login session BI 网格)只能通过 POST 查询/网格类端点访问,而不能通过普通资源 GET 访问——本文档将其记录为一项发现,而非虚构为一个工具。因此,会话数据不在此连接器 v1 的范围内;这并非单独作出的排除决定。
硬性排除:任何会返回实际监控内容或生成/泄露凭据的接口——无论其名称如何,即使动词是 GET
根据此连接器的范围边界,区别在于:有关监控的元数据(监控对象、监控时间、触发的规则)属于范围内;实际采集到的监控内容,或获取有效凭据的机制,则不属于范围,无论读写动词是什么。
| Endpoint | Rationale |
|---|---|
GET /tm-api/agent/:id/avatar/:scale | 返回 Agent 的头像/照片——属于生物识别相关图像内容。 |
GET /tm-api/activity/email/:id/info | 邮件活动元数据(参与者/主题)——与内容密切相关;与下方两个同类接口一并排除,不单独判断。 |
GET /tm-api/activity/email/:id/body-html-document | 以渲染后的 HTML 形式返回完整的已采集邮件正文。原始采集内容。 |
GET /tm-api/activity/email/:id/body | 返回完整的已采集邮件正文。原始采集内容。 |
GET /tm-api/player/settings | 针对特定 Agent 和计算机的会话录制播放器/播放设置。 |
GET /tm-api/player-tags | 与录制会话时间线关联的注释/书签。 |
GET /tm-api/player-tags/timeline | 特定 Agent/计算机在某段时间内的录制会话时间线标签。 |
GET /tm-api/player/export-video/status/:id | 屏幕录制视频导出任务的状态。 |
GET /tm-api/player/available-video-data | 列出某台计算机在某段时间内存在哪些已录制视频片段——即可用屏幕录制内容的清单。 |
GET /tm-api/report/export/download/:id | 通用报告导出下载——导出的内容可能是此 API 支持的任何报告类型,包括击键、邮件、即时消息或视频,因此按类别排除,而不针对每项导出单独判断。 |
GET /tm-api/report/export/status | 报告导出任务的状态——与上方下载接口存在相同的通用内容风险。 |
GET /tm-api/short-token | 生成新的短期有效访问令牌。这是凭据签发,而非内容——与此目录中其他连接器的凭据返回接口采用相同的审核标准。 |
GET /tm-api/token | 列出账户的有效 JWT 令牌 ID——属于凭据/会话管理数据。 |
Teramind 文档中的任何 GET 接口都不会返回原始击键日志、聊天/即时消息内容、打印文档内容或社交媒体活动内容——这些内容只能通过 POST /tm-api/report/*/grid 和 POST /tm-api/wip/tma-query(BI)接口系列获取;此连接器会在下文按类别排除这些接口。因此,此连接器仅限 GET 的范围从设计上就排除了击键/屏幕截图/聊天内容的暴露,而不只是依赖上述逐个接口的判断——有关此说法的适用范围,请参阅凭据范围。
按类别排除(超出指定范围:计算机/用户/会话清单 + 规则/警报数据)
| 类别 | 排除原因 |
|---|---|
| 活动(汇总活动) | 活动/效率数据,不属于清单或规则/警报元数据。 |
| BI / BI Filter(37 项操作) | 所有 POST 查询/图表端点;其中一些会返回捕获的内容(击键、电子邮件、即时消息、社交媒体、打印文档、网络搜索、控制台命令)。 |
| 报告 / 报告设置 / 报告批处理(约 55 项操作) | 所有 POST 网格/设置端点;其中一些会返回捕获的内容(击键、电子邮件、即时消息、打印、社交媒体、控制台命令、视频导出)。 |
| 视频导出(其余 2 项操作) | 会生成屏幕录制内容导出的 POST 写入操作。 |
| 工时跟踪报告、工时跟踪器任务、任务、日程安排 | 员工打卡/任务/轮班安排功能,与监控清单或规则/警报数据无关。 |
| LDAP | 目录服务连接配置——超出范围;即使只是普通读取,也可能暴露绑定账户详情。 |
| SMTP、数据导入 | 单一 POST 写入操作(发送测试邮件、创建 VoIP 事件);没有读取接口。 |
| 共享列表 | 规则输入数据集(例如规则引用的关键词/URL 监控列表),敏感性不明确——经过判断后排除,而非默认纳入。 |
效率配置文件、instance/tma-categories | 效率分类体系——可以说与规则相关,但不属于此连接器指定的范围;为严格控制范围而排除,而非勉强纳入。 |
instance/tma-state、time、license/usage | 通用工具/状态端点,均不符合计算机/用户/会话清单或规则/警报数据的范围。 |
Agent、Computer、Department、Behavior Policy、Anomaly Rule、Authorization、Monitoring Profile 上的所有 POST/PUT/DELETE/PATCH 操作 | 写入、配置、启用/禁用监控或账户变更操作。无论使用何种 HTTP 方法,均从未实现。 |
| 异常规则/行为策略模板、标签及杂项组合、演示策略 | 用于编写新规则的目录,而非此组织实际配置的监控内容——超出只读清单连接器的范围。(teramind_list_anomaly_rule_tags 是唯一保留的例外:它是简单、低风险的分类体系查询,可直接用于理解 teramind_list_anomaly_rules 的输出。) |
如有需求,可在经过审慎的范围决策后,作为后续工作添加——而非默认纳入。
字段级限制,而不仅是端点级限制
GET /tm-api/v1/agents[/:id] 支持可选的 fields 查询参数,可返回 salary_type 和 default_wage(薪酬数据)以及 ldap_attrs(原始目录属性)——这些属于远超“谁在被监控”范围的人力资源/个人身份信息。此连接器的 client.ts 从不传递该参数,因此无论调用方通过工具输入架构请求什么,实际返回的始终只有默认身份字段(agent_id、name、email_address、avatar、online)。(teramind_list_agents / teramind_get_agent 均未公开 fields 参数。)
提请审核者注意的判断事项:警报内容
teramind_list_alerts 明确属于此连接器指定的范围(“规则/警报数据”),且 Teramind 文档说明,其响应结构包含 description/caption/values 字段,用于描述规则触发的原因。根据规则类型,这些字段可能包含一段触发上下文的简短摘录(例如匹配到的关键词或访问过的 URL),而非纯元数据——这些内容会原样传递,不作修改。之所以判定为范围内,是因为警报在此连接器的范围中被明确列出,而且摘录(如有)仅限于人工已配置规则要标记的内容,而非未经筛选的原始活动捕获。不过,按照本任务的要求,这里明确标出了该问题,而没有擅自将其作为已定论的事项。
凭据范围(连接真实账户前请先阅读)
这是本 README 中最重要的发现。 以下两项结论的置信度有意区分:
(1)已从结构上验证——此连接器自身的代码从不调用内容捕获、凭据签发或写入端点。已通过检查 client.ts 确认:代码中恰好有 16 个函数,每个工具对应一个函数,且每个函数都是对上方工具部分所列端点之一的字面量 GET 请求;src/ 中不存在通配、透传或通用请求函数。此连接器在设计上是只读的,不会捕获内容。
(2)由供应商文档说明,未经独立验证——底层访问令牌本身能否限制为仅元数据范围,是一个不同于此连接器代码实际调用哪些端点的问题。答案比简单的是或否更复杂:
- 根据 Teramind 自己的知识库(“User Menu”和“How to change a user's access level”两篇文章,均于 2026-09-20 直接获取),访问令牌会继承创建它的账户的全部权限,且权限在创建时固定。 Teramind 不提供独立于账户角色的令牌范围限制机制。
- 默认情况下——单一的完整权限“Administrator”账户,而全新的自助云试用注册会创建此类账户——没有任何限制。 在该账户下创建的令牌可以访问 Teramind 文档中记载的全部 239 项操作,包括屏幕录像、按键记录以及电子邮件/聊天内容捕获。此连接器的代码从不调用这些端点,但凭据本身并未受到限制,除非客户在供应商端采取有意的手动措施,而此类措施超出了此连接器或 Conduit 的控制或验证范围。
- Teramind 确实记录了一种权限较低的角色:“Operational Administrator”。该角色可以创建自己的访问令牌,且文档明确说明其无法“浏览任何录像或查看监控数据”,也无法查看“Alerts”(引自 Teramind 的“How to change a user's access level”文章)。这是最接近仅元数据令牌的有据可查方案,但:(a)这是客户必须手动进行的账户配置选择,不是此连接器或 Conduit 连接流程会强制执行或在连接时检查的设置;(b)Teramind 的文档描述的是菜单/界面级访问限制,且没有进行独立测试,使用受 Operational Administrator 角色限制的令牌向此连接器排除的端点发送请求,以确认服务器端是否会真正返回 403,而非仅在界面层面受限;(c)文档明确说明该角色也会阻止访问 Alerts,而此连接器将 Alerts 视为范围内内容——因此,即使是这种权限较低的角色,也无法与此连接器自身的范围边界完全对应。
- 另有一种权限限制更严格的角色:“Infrastructure Administrator”,但它:(a)无法自行创建访问令牌(只能由 Administrator 创建后分配给该角色);(b)根据 Teramind 文档,无法“列出员工或计算机账户”——也就是说,它还会阻止此连接器自身的计算机/Agent 库存工具,因此不适用于此连接器的用途。
总体结论:默认情况下,Teramind 访问令牌凭据本身没有任何机制阻止其访问此连接器有意排除的所有端点。 实际的控制边界是此连接器自身的代码(见上文第 1 点),而不是凭据。建议:对于负责 Gate 3 审查或为连接此供应商的客户提供建议的人员,可考虑在文档中说明,客户应在专用的 Operational Administrator 账户下创建令牌,而非使用权限完整的 Administrator 账户,以此作为纵深防御措施,防止配置不同的客户端重复使用同一已存储令牌;同时仍应将此连接器自身的代码(它从不调用内容捕获端点)视为主要且已验证的控制措施。
请求限制
- HTTP 请求正文上限为 256 KiB(262144 字节)。通过
X-Gateway-S2S检查后,如果Content-Length超过上限,则返回 413 和 JSON-RPC 错误;没有Content-Length的正文则受 MCP SDK 传输层限制。未通过身份验证的请求仍会优先收到 401。 tools/call参数上限为 10,000 个元素(包括任意深度的每个数组项和对象键)。超出上限的输入会返回isError工具结果,且不会被分发。
这些限制用于应对 CVE-2026-111768 / GHSA-46jr-4wx8-v453(验证期间的内存耗尽)和 GHSA-f897-62hf-6gxq(请求正文 / 批次大小无限制)。
开发
npm install
npm run build
npm test
npm run lint # tsc --noEmit
Docker
docker build -t teramind-mcp .
docker run -p 8080:8080 -e TERAMIND_ACCESS_TOKEN=... -e TERAMIND_INSTANCE_URL=https://yourcompany.teramind.co teramind-mcp
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。