# io.github.zyf8827/tern (npm · @zyf8827/tern-mcp)

Model Context Protocol (MCP) server for Tern E2E testing platform

- Trust score: 63/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-26

## Components

- npm · `@zyf8827/tern-mcp`: 63/100 (this document), [markdown](https://verifymcp.io/servers/zyf8827-tern/zyf8827-tern-mcp.md), [page](https://verifymcp.io/servers/zyf8827-tern/zyf8827-tern-mcp)

## Channel facts

- Registry: `npm`
- Package: `@zyf8827/tern-mcp`
- Version: `0.3.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-26.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - No production dependencies, so there is no dependency health to assess.
- **Provenance & Transparency**: 23/100
  - Repository check failed: no source repository is declared.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 3 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 75/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 2503 tokens (~92/item across 27 items; 27 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 80/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 39% of tool parameters carry a description.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "tern_delete_run" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.
  - An AI judge read all 27 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the io.github.zyf8827/tern MCP server?

io.github.zyf8827/tern runs locally as an npm package, launched with npx -y @zyf8827/tern-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add zyf8827-tern -- npx -y @zyf8827/tern-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "zyf8827-tern": {
      "command": "npx",
      "args": [
        "-y",
        "@zyf8827/tern-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "zyf8827-tern": {
      "command": "npx",
      "args": [
        "-y",
        "@zyf8827/tern-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add zyf8827-tern -- npx -y @zyf8827/tern-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "zyf8827-tern": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@zyf8827/tern-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add zyf8827-tern --command npx --arg -y --arg @zyf8827/tern-mcp
```

### Hermes

```yaml
mcp_servers:
  zyf8827-tern:
    command: "npx"
    args: ["-y", "@zyf8827/tern-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "zyf8827-tern": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@zyf8827/tern-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add zyf8827-tern -t stdio -c npx -a -y @zyf8827/tern-mcp
```

### Other

```json
{
  "mcpServers": {
    "zyf8827-tern": {
      "command": "npx",
      "args": [
        "-y",
        "@zyf8827/tern-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-25 (score 63, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-09-24 (score 63, +1)

- [functional improvement] Security disclosure: unverified → pass

### 2026-09-23 (score 62, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-09-22 (score 47)

First indexed and scored.

## MCP tools (27)

### `tern_list_projects` (~45 tokens)

列出平台上的所有测试项目（用例 git/local 仓库）及用例数量、最近同步状态、git 认证摘要（secret 不回显）

### `tern_add_project` (~174 tokens)

添加一个 git 用例仓库作为测试项目（自动 clone + 首次同步）。默认 HTTP 协议，可用账号密码；SSH 必须提供私钥 PEM（运行在容器内，不会使用宿主机密钥）。仓库根目录需要 tern.yaml

Input parameters:

- `branch` (string)
- `credentialType` (string): none=公开库；password=HTTP 账号密码；ssh=私钥
- `gitUrl` (string, required): git 仓库地址（https 默认；ssh:// 或 git@ 需配私钥）
- `name` (string): 项目名（缺省读仓库 tern.yaml 的 name）
- `secret` (string): HTTP 密码/token，或 SSH 私钥 PEM 全文
- `username` (string): HTTP 用户名

### `tern_sync_project` (~72 tokens)

强制更新一个项目：git 仓库会 fetch + reset --hard + clean -fdx（丢弃一切本地修改）后重新扫描用例。写完用例 push 之后调用它让平台生效

Input parameters:

- `project` (string, required): 项目 id 或名称

### `tern_list_cases` (~156 tokens)

查询测试用例列表（默认一页 20 条）。可用 project / version / module / tags（tagMode any=任一命中, all=全部命中）/ excludeTags / 关键字多维度过滤

Input parameters:

- `excludeTags` (array)
- `limit` (number): 每页条数，默认 20
- `module` (array): 功能模块（可多选）
- `offset` (number)
- `project` (string)
- `q` (string): 标题/描述/ID 关键字
- `tagMode` (string)
- `tags` (array)
- `version` (array): 被测系统版本（可多选）

### `tern_get_case` (~47 tokens)

获取单个用例的元数据、完整源码与最近执行记录

Input parameters:

- `caseId` (string, required): 用例 ID（即文件相对路径，如 portal/login/login-basic）

### `tern_run_cases` (~441 tokens)

创建并执行一次测试运行。必须指定 project（或只用 caseIds/suites，且须同属一个项目）。可覆盖该项目的多个 version / module / tag。suites 引用平台测试集（可多个：各自用各自绑定的环境，按「用例×环境」去重执行）。env 引用平台环境（显式指定时会覆盖拉平所有测试集的环境绑定）。workerId 缺省则所有空闲 worker 并行。wait=true（默认）阻塞到结束

Input parameters:

- `caseIds` (array): 显式用例 ID 列表（须同属一个项目）
- `env` (string): 环境名（显式指定 = 覆盖拉平所有测试集的环境绑定；不传则各测试集用自己的环境）
- `excludeTags` (array)
- `includeQuarantined` (boolean): 纳入已隔离（flaky）用例；缺省排除（显式 caseIds 点名不受限）
- `maxAttempts` (number): 每条用例最大尝试次数
- `module` (array): 功能模块（可多选）
- `params` (object): 运行参数（显式覆盖环境值与环境变量注入，如 BASE_URL、AUTH_ACCOUNT）
- `project` (string): 归属项目（必填，除非只传同项目的 caseIds/suites）
- `suites` (array): 引用的测试集名（可多个；各用各的 env 绑定，与筛选/caseIds 并存取并集）
- `tagMode` (string)
- `tags` (array)
- `timeoutS` (number): 等待超时秒数（默认 900）
- `title` (string)
- `version` (array): 被测系统版本（可多选）
- `wait` (boolean): 等待运行完成（默认 true）
- `workerId` (string): 指定执行的 worker（id 或名称）；缺省所有空闲 worker 并行

### `tern_list_runs` (~126 tokens)

分页列出测试运行（默认一页 20 条），可按 status / project / env / createdBy / workerId / 关键字 / 创建时间筛选

Input parameters:

- `createdBy` (string)
- `createdFrom` (string)
- `createdTo` (string)
- `env` (string): 按环境名筛选
- `limit` (number)
- `offset` (number)
- `project` (string)
- `q` (string)
- `status` (string)
- `workerId` (string)

### `tern_get_run` (~46 tokens)

查询一次测试运行的状态与逐用例结果。runId 不传时返回最近一次运行

Input parameters:

- `latest` (boolean)
- `runId` (string)

### `tern_wait_run` (~47 tokens)

阻塞等待测试运行结束并返回最终统计

Input parameters:

- `runId` (string, required)
- `timeoutS` (number): 等待超时秒数（默认 900）

### `tern_retry_failed` (~67 tokens)

基于某次测试运行中失败的用例创建新运行并执行（修复后验证的标准动作）

Input parameters:

- `runId` (string, required)
- `timeoutS` (number): 等待超时秒数（默认 900）
- `wait` (boolean)

### `tern_rerun` (~81 tokens)

重跑某次测试运行的全部用例（沿用源运行的环境/参数/worker/trace 选项）；只复跑失败用例用 tern_retry_failed

Input parameters:

- `runId` (string, required)
- `timeoutS` (number): 等待超时秒数（默认 900）
- `wait` (boolean)

### `tern_cancel_run` (~111 tokens)

结束一次测试运行。默认强制结束：运行立即收敛为 cancelled（不等 worker 回执），中断 worker 上该用例的全部阶段（含尚未开始执行/登录中的条目），worker 不在线时重连后补发中断；force=false 为软取消：仅通知已进入执行阶段的用例。

Input parameters:

- `force` (boolean): 强制结束（默认 true）；false = 软取消
- `runId` (string, required)

### `tern_get_execution` (~44 tokens)

查询单条用例某次执行的详情：错误、日志尾部、产物清单（截图/trace URL）

Input parameters:

- `executionId` (string, required)

### `tern_get_screenshot` (~41 tokens)

获取某次用例执行的失败截图，以图片返回（多模态模型可直接查看失败现场）

Input parameters:

- `executionId` (string, required)

### `tern_list_workers` (~20 tokens)

列出所有执行 Worker 及其状态

### `tern_resync_cases` (~35 tokens)

全量更新并重新扫描所有项目用例（git 拉取 + 重扫 + lint/打包校验）

### `tern_list_environments` (~69 tokens)

列出项目环境与变量清单（清单来自用例仓库 tern.yaml 的 env.variables；环境值在平台配置，secret 不回显）。发起运行前可用它确认环境是否配齐

Input parameters:

- `project` (string, required): 项目 id 或名称

### `tern_delete_run` (~73 tokens)

删除一次测试运行：级联删除执行记录/事件，并清理截图、trace、日志等产物文件（不可恢复）。进行中的运行需 force=true

Input parameters:

- `force` (boolean): 进行中的运行先强制取消再删（默认拒绝）
- `runId` (string, required)

### `tern_get_failure_summary` (~100 tokens)

获取一次运行的失败摘要：按错误签名聚类分组（同签名 = 同类失败），每组含代表性用例、截图 URL、日志尾部与跨 run 历史（首见/出现次数）。诊断批量失败的首选工具

Input parameters:

- `runId` (string, required)
- `withScreenshot` (boolean): 附带第一组的失败截图（image，默认 true）

### `tern_list_schedules` (~31 tokens)

列出定时任务（cron、环境、下次触发时间、最近一次运行）

### `tern_list_suites` (~76 tokens)

列出项目测试集：可命名复用的用例选择 + 环境/账号绑定。返回命中数与健康度（悬空引用/空集/环境缺值）——发起运行前选集的主入口

Input parameters:

- `project` (string, required): 项目 id 或名称

### `tern_get_suite` (~45 tokens)

获取单个测试集详情：选择器、环境/账号绑定、健康度与命中数

Input parameters:

- `name` (string, required)
- `project` (string, required)

### `tern_create_suite` (~179 tokens)

创建测试集（项目内可命名复用的用例选择 + 执行前提绑定）。选择器 = 筛选条件 + 显式包含/排除（排除优先）；空选择器 = 项目全量。env/account 是运行该集时的缺省环境与账号（AUTH_ACCOUNT，只覆盖未声明 auth 的用例），run 显式指定可覆盖

Input parameters:

- `account` (string): 绑定账号名（tern.yaml auth.accounts）
- `description` (string)
- `env` (string): 绑定环境名（平台项目页配置）
- `name` (string, required): 小写 kebab-case，项目内唯一
- `params` (object): 绑定运行参数（非敏感）
- `project` (string, required)
- `selector` (object)

### `tern_update_suite` (~91 tokens)

更新测试集（只改提供的字段；改名会联动引用它的定时任务）

Input parameters:

- `account` (string|null)
- `description` (string)
- `env` (string|null)
- `name` (string, required)
- `params` (object)
- `project` (string, required)
- `rename` (string): 新名字
- `selector` (object)

### `tern_delete_suite` (~52 tokens)

删除测试集（历史 run 靠 scope 快照不受影响；引用它的定时任务触发时会明确报错）

Input parameters:

- `name` (string, required)
- `project` (string, required)

### `tern_preview_run` (~157 tokens)

run 创建 dry-run 预览（不执行不落库）：与 tern_run_cases 同参，返回去重后的条目总数、按环境分组的命中构成（每组的来源测试集与条数）、各测试集命中数与去重明细——发起前自查选择是否写对

Input parameters:

- `caseIds` (array)
- `env` (string)
- `excludeTags` (array)
- `includeQuarantined` (boolean)
- `module` (array)
- `project` (string)
- `suites` (array)
- `tagMode` (string)
- `tags` (array)
- `version` (array)

### `tern_set_case_quarantine` (~77 tokens)

手动隔离/解除隔离一条用例（flaky 治理）。隔离的用例默认不参与新建运行，但仍可显式 caseIds 点名执行；手动设置优先于自动规则

Input parameters:

- `caseId` (string, required)
- `quarantined` (boolean, required)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/zyf8827-tern/zyf8827-tern-mcp#diagnostics

## Score history

- 2026-09-26: 63
- 2026-09-25: 63
- 2026-09-24: 63
- 2026-09-23: 62
- 2026-09-22: 47

## Common questions

### What is the io.github.zyf8827/tern MCP server?

io.github.zyf8827/tern is an MCP server listed in the public MCP registry as io.github.zyf8827/tern. Model Context Protocol (MCP) server for Tern E2E testing platform. This page covers its npm package (@zyf8827/tern-mcp).

### Is the io.github.zyf8827/tern MCP server safe to use?

io.github.zyf8827/tern scores 63 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 26 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.zyf8827/tern MCP server expose?

io.github.zyf8827/tern exposes 27 tools: tern_list_projects, tern_add_project, tern_sync_project, tern_list_cases, tern_get_case, and 22 more. Their descriptions and schemas cost roughly 2,503 tokens of context every time the server is loaded.

### Is the io.github.zyf8827/tern MCP server still maintained?

io.github.zyf8827/tern is still listed as active in the MCP registry. We last reached this channel on 26 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the io.github.zyf8827/tern MCP server under?

io.github.zyf8827/tern declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/@zyf8827/tern-mcp
- Socket report: https://socket.dev/npm/package/@zyf8827/tern-mcp
- Changelog RSS feed: https://verifymcp.io/servers/zyf8827-tern/zyf8827-tern-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/zyf8827-tern/zyf8827-tern-mcp.json
- HTML version of this page: https://verifymcp.io/servers/zyf8827-tern/zyf8827-tern-mcp
