内容
Zephyr 审查 MCP
一个 **只读** 的 [模型上下文协议](https://modelcontextprotocol.io) 服务器,暴露
[Zephyr Scale Cloud](https://smartbear.com/test-management/zephyr-scale/) 测试数据为审查导向的工具,以便例如在 Cowork 中审查一个 **故事**实际测试覆盖率。
它回答:*这个故事是否有足够的、测试,并且它们是否通过?*
故事文本(描述、验收预期来自 Jira(例如 Atlassian Rovo MCP)。该服务器提供 Zephyr 的 **测试覆盖率部分**。
## 功能(以及不具备的功能)
- **只读**。每个工具仅发出 `GET` 请求。没有工具创建、更新或删除 Zephyr 数据。“草拟新测试”是 Claude 在对话中的推理活动,而不是写入调用。
- 假设您的团队在 Zephyr 中 **将测试用例链接ira 问题** (`issuelinks` 关系)。如果一个故事没有链接的测试,覆盖率读取为空。
## 工具
| 工具 | 用途 |
|------|---------|
| `review_story_coverage(issueKey)` | 标题工具。扩展链接的测试用例、其步骤和执行,并返回一个摘要的覆盖率包以及通过/失败/未运行的摘要。较重 - 在评估覆盖率/质量/通过-失败时使用。 |
| `list_story_test_cases(issueKey)` | 轻量级、故事范围的列表:链接到故事的测试用例,每个测试用例都有键、名称/标题、优先级和状态。无步骤或执行。在您只想要故事测试的列表/标题时使用。 |
| `get_test_case(testCaseKey)` | 一个测试用例的完整详细信息,包括有序步骤(保留空的预期结果字段以进行质量审查)。 |
| `list_story_executions(issueKey)` | 集中的通过/失败视图:每个链接执行的狀態、周期和日期。 |
| `list_test_case_executions(testCaseKey)` | 一个测试用例的完整 **历史记录** ,最新的优先 - 每个运行跨越所有周期和临时运行(不仅是最新的执行都带有状态、周期、日期、评论、时间(执行/预估毫秒)、运行者、环境、自定义字段和链接的 Jira 问题。测试用例范围;使用 `list_story_executions` 获取整个故事。 |
| `search_test_cases(projectKey, query)`范围的发现:项目中的测试用例,其键/名称/目标与 `query` (客户端过滤器 - Zephyr全文搜索)匹配。范围的;仅在您没有问题键时使用。 |
| `get_project(projectKey)` | 项目标识符和元数据。 |
## 配置
通过环境变量设置(参见 `.env.example`):
| 变量 | 必需 | 默认值 | 备注 |
|----------|----------|---------|-------|
| `ZEPHYR_API_TOKEN` | **是** | — | JWT 持有者令牌。在 J 个人资料 → *Zephyr API 密钥* 中生成。如果,服务器将快速失败。 |
| `ZEPHYR | 否 | `us` | `us` 、 `eu` 、 `au` 、 `de` 之一。 |
| `ZEPHYR_BASE_URL` | 否 | 根据区域推导 |基准 URL 重写; `ZEPHYR 。 |
区域基准 URL:
- `us` → `https://api.zephyrscale.smartbear.com/v2` (默认)
- `eu` → `https://eu.api.zephyrscale.com/v2`
- `au` → `https://au.api.zephyrscale.smartbear.com/v2`
- `de `https://de.api.zephyrscale.smartbear.com/v2`
令牌映射到 Jira/Zephyr **用户** ;服务器只看到该用户可以看到的内容。
## 用法
在 MCP 客户端中使用服务器。需要 Node.js 18+。无需克隆或构建 - `npx` 获取并运行已发布的包。
添加到您的 MCP 客户端配置(Claude Cowork / Claude Desktop):
```json
{
"mcpServers": {
"zephyr": {
"command": "npx",
"args": ["-y", "@pabloveintimilla/zephyr-mcp"],
"env": {
"ZEPHYR_API_TOKEN": "<your-token>",
"ZEPHYR_REGION": "us"
}
}
}
}
```
就是这样 - 客户端按需启动服务器。
## 开发
用于 **开发服务器本身** :克隆存储库并安装依赖项。
```bash
git clone https://github.com/pabloveintimilla/zephyr-mcp.git
cd zephyr-mcp
npm install
npm run build
```
运行它:
```bash
ZEPHYR_API_TOKEN=<your-token> npm start # from built dist/
ZEPHYR_API_TOKEN=<your-token> npm run dev # from source, no build step
```
运行测试:
```bash
npm test
```
将 MCP 客户端指向本地构建(代替已发布的包):
```json
{
"mcpServers": {
"zephyr": {
"command": "node",
"args": ["/absolute/path/to/zephyr-mcp/dist/index.js"],
"env": {
"ZEPHYR_API_TOKEN": "<your-token>",
"ZEPHYR_REGION": "us"
}
}
}
}
```
### 使用 OpenSpec 进行规范驱动开发
该项目使用 [OpenSpec](https://github.com/Fission-AI/OpenSpec) 进行规范驱动开发。**开始编码功能** -意图捕获为更改,然后实施。这保持 `openspec/specs/` (当前行为的源)准确,并使每个更改在编写代码之前都可审查。
布局:
- `openspecs/` — 当前的、已同意的行为(每个功能)。
- `openspec/` — 正在进行的(提案、设计、量、任务)。
-pec/changes/archive/`完成的更改,为历史记录保留流程(在 Claude Code斜杠命令运行,或使用 `openspec` CLI):
1. **探索** — `/opsx:explore` 在之前思考问题。
2提议** — `/opspropose` 创建具有.md` 、 `design 、 `specs/` 下的规格增量和 `tasks.md` 的更改。
3. **应用** — `/opsx:apply` 实现任务,并在执行过程中逐步检查。
4. **存档** — `/opsx:archive` 一旦工作完成并经过验证;此同步规格增量到 `openspec/specs/` 并将更改移至 `archive/` 。
有用的 CLI 命令:
```bash
openspec list # 活动更改
openspec status --change "<name>" # 工件 + 任务进度
openspec instructions <artifact> --change "<name>"
```
## 发布 / 版本
发布到 npm 由 GitHub Actions 自动化( [`.github/workflows/publish.yml`](.github/workflows/publish.yml) )。发布 **GitHub 版本** 会构建包并运行 `npm publish --provenance --access public` 。
一次性设置:
1. npm 访问令牌(粒度,具有 `@pabloveintimilla/zephyr-mcp` 的发布权限)。
将其添加为存储库,命名为 `NPM_TOKEN` (设置 → 机密和变量 → 操作)。
每个版本:
1. 升级版本: `npm version <patch|minor|major>` (提交和标签)。
2. 推送标签: `git push --follow-tags` 。
3. 为该标签创建 GitHub 版本 - 工作流发布它。
验证npx -yabloveintimillaphyr-mcp` 在 shell 中解析新版本
Zephyr ScaleAPI 规范在 [`docsphyr.api.yml`](docsphyr.api