GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
作者提供的说明(英文原文)
Zephyr Scale on self-hosted Jira Server/DC: test cases, cycles, executions, plans and attachments
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
JIRA_BASE_URL, JIRA_PAT, JIRA_AUTH, JIRA_USERNAME, JIRA_PASSWORD, ZEPHYR_DEFAULT_PROJECT_KEY, ZEPHYR_ALLOW_INTERNAL_API, ZEPHYR_READONLY, JIRA_TLS_REJECT_UNAUTHORIZED, JIRA_TIMEOUT_MS, JIRA_MAX_RETRIES, ZEPHYR_LOG_LEVEL标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"zephyr-scale": {
"command": "npx",
"args": [
"-y",
"zephyr-scale-mcp"
],
"env": {
"JIRA_BASE_URL": "your-value",
"JIRA_PAT": "your-value",
"JIRA_AUTH": "your-value",
"JIRA_USERNAME": "your-value",
"JIRA_PASSWORD": "your-value",
"ZEPHYR_DEFAULT_PROJECT_KEY": "your-value",
"ZEPHYR_ALLOW_INTERNAL_API": "your-value",
"ZEPHYR_READONLY": "your-value",
"JIRA_TLS_REJECT_UNAUTHORIZED": "your-value",
"JIRA_TIMEOUT_MS": "your-value",
"JIRA_MAX_RETRIES": "your-value",
"ZEPHYR_LOG_LEVEL": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add zephyr-scale --env JIRA_BASE_URL=your-value --env JIRA_PAT=your-value --env JIRA_AUTH=your-value --env JIRA_USERNAME=your-value --env JIRA_PASSWORD=your-value --env ZEPHYR_DEFAULT_PROJECT_KEY=your-value --env ZEPHYR_ALLOW_INTERNAL_API=your-value --env ZEPHYR_READONLY=your-value --env JIRA_TLS_REJECT_UNAUTHORIZED=your-value --env JIRA_TIMEOUT_MS=your-value --env JIRA_MAX_RETRIES=your-value --env ZEPHYR_LOG_LEVEL=your-value -- npx -y zephyr-scale-mcp运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"zephyr-scale": {
"command": "npx",
"args": [
"-y",
"zephyr-scale-mcp"
],
"env": {
"JIRA_BASE_URL": "your-value",
"JIRA_PAT": "your-value",
"JIRA_AUTH": "your-value",
"JIRA_USERNAME": "your-value",
"JIRA_PASSWORD": "your-value",
"ZEPHYR_DEFAULT_PROJECT_KEY": "your-value",
"ZEPHYR_ALLOW_INTERNAL_API": "your-value",
"ZEPHYR_READONLY": "your-value",
"JIRA_TLS_REJECT_UNAUTHORIZED": "your-value",
"JIRA_TIMEOUT_MS": "your-value",
"JIRA_MAX_RETRIES": "your-value",
"ZEPHYR_LOG_LEVEL": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"zephyr-scale": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"zephyr-scale-mcp"
],
"env": {
"JIRA_BASE_URL": "your-value",
"JIRA_PAT": "your-value",
"JIRA_AUTH": "your-value",
"JIRA_USERNAME": "your-value",
"JIRA_PASSWORD": "your-value",
"ZEPHYR_DEFAULT_PROJECT_KEY": "your-value",
"ZEPHYR_ALLOW_INTERNAL_API": "your-value",
"ZEPHYR_READONLY": "your-value",
"JIRA_TLS_REJECT_UNAUTHORIZED": "your-value",
"JIRA_TIMEOUT_MS": "your-value",
"JIRA_MAX_RETRIES": "your-value",
"ZEPHYR_LOG_LEVEL": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
JIRA_AUTH envJIRA_USERNAME envZEPHYR_DEFAULT_PROJECT_KEY envZEPHYR_ALLOW_INTERNAL_API envZEPHYR_READONLY envJIRA_TLS_REJECT_UNAUTHORIZED envJIRA_TIMEOUT_MS envJIRA_MAX_RETRIES envZEPHYR_LOG_LEVEL env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日
注册名称已通过 GitHub 账户 vilaabo 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:JIRA_BASE_URL, JIRA_PAT, JIRA_PASSWORD
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(1.0.0)于3个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:GitHub, Desktop Commander, Cloudflare MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
MCP server for Zephyr Scale on self-hosted Jira Server / Data Center (formerly TM4J). It gives an AI agent — Claude Code, Claude Desktop, Cursor, any MCP client — 54 tools over your test management: test cases, folders, test cycles, executions, test plans, attachments and automation imports, through the Zephyr Scale REST API v1 at {JIRA_BASE_URL}/rest/atm/1.0.
npm: zephyr-scale-mcp · MCP Registry: io.github.vilaabo/zephyr-scale-mcp · Русская версия →
⚠️ Scope: Server / Data Center only. Zephyr Scale Cloud (API v2) and Zephyr Squad are different APIs and are out of scope — this server will not work against them.
Most Zephyr MCP servers target the Cloud API. If your Jira is on-premise you get the v1 API instead, and v1 has teeth: test runs are immutable after creation, folders cannot be listed, statuses are case-sensitive internal names, BDD scripts reject a Feature: header, and older plugin builds are missing whole endpoints. This server encodes that knowledge instead of leaving the agent to discover it one 400 at a time.
add_test_steps merges steps by id (read → merge → write) so nothing is silently deleted; recreate_test_run_with_items works around run immutability and can carry the last results over; get_issue_test_coverage, get_test_run_summary, clone_test_case, move_test_cases_to_folder.Retry-After-aware retries with exponential backoff, error messages carrying actionable hints, read-only mode, secrets kept out of logs and tool output.Requirements: Node.js >= 20, Jira Server/DC with the Zephyr Scale plugin, and a Personal Access Token (Jira 8.14+) or a username/password pair.
Nothing to clone — the package is on npm. Claude Code:
claude mcp add zephyr-scale \
--env JIRA_BASE_URL=https://jira.example.com \ --env JIRA_PAT= \ --env ZEPHYR_DEFAULT_PROJECT_KEY=PROJ \ --env ZEPHYR_ALLOW_INTERNAL_API=true \ -- npx -y zephyr-scale-mcp
Claude Desktop / any MCP client (claude_desktop_config.json, .mcp.json):
{
"mcpServers": { "zephyr-scale": { "command": "npx", "args": ["-y", "zephyr-scale-mcp"], "env": { "JIRA_BASE_URL": "https://jira.example.com", "JIRA_PAT": " ", "ZEPHYR_DEFAULT_PROJECT_KEY": "PROJ", "ZEPHYR_ALLOW_INTERNAL_API": "true" } } } }
Running from source instead
git clone https://github.com/vilaabo/zephyr-scale-mcp.git
cd zephyr-scale-mcp npm install npm run build # -> dist/index.js
Then point the client at the build: "command": "node", "args": ["/path/to/zephyr-scale-mcp/dist/index.js"].
`ZEPHYR_ALLOW_INTERNAL_API=true` is optional and recommended. It registers 12 extra tools that reach the things the public API cannot do at all: editing a test run in place — renaming or moving it (
update_test_run) and adding or removing cases without changing its key (add_test_cases_to_run,remove_test_cases_from_run) — plus listing the folder tree (get_folder_tree), deleting folders (delete_folder), editing older executions (update_test_result_by_id) and reading the exact status names the API silently expects (get_status_options). These call the same undocumented/rest/tests/1.0endpoints the Jira UI itself uses; the vendor does not support them and they may differ or be absent on another Zephyr Scale version. Leave the flag off if that trade-off is not acceptable — the other 42 tools are unaffected.
Then ask the agent to run health_check. It verifies connectivity and credentials via GET /rest/api/2/myself and, when ZEPHYR_DEFAULT_PROJECT_KEY is set, that the Zephyr plugin answers on /rest/atm/1.0.
/Regression/Payments and add step-by-step test cases for the checkout flow described in this document."*/Regression, review them, and set the ready ones to Approved."*@TestCaseKey=PROJ-T1 tag.| Variable | Required | Default | Purpose | |||
|---|---|---|---|---|---|---|
JIRA_BASE_URL | yes | — | Jira base URL without a trailing /, e.g. https://jira.example.com | |||
JIRA_AUTH | no | pat | pat \ | basic | ||
JIRA_PAT | with pat | — | Jira Server/DC Personal Access Token | |||
JIRA_USERNAME, JIRA_PASSWORD | with basic | — | Basic-auth credentials | |||
JIRA_TIMEOUT_MS | no | 30000 | Per-request timeout | |||
JIRA_MAX_RETRIES | no | 2 | Retries for GET and for any 429/503, honoring Retry-After, otherwise exponential backoff with jitter | |||
JIRA_TLS_REJECT_UNAUTHORIZED | no | true | false accepts self-signed certificates — this disables TLS verification process-wide and prints a warning to stderr | |||
ZEPHYR_DEFAULT_PROJECT_KEY | no | — | Used whenever a tool is called without projectKey | |||
ZEPHYR_READONLY | no | false | true makes every write tool refuse with an error; read tools keep working | |||
ZEPHYR_ALLOW_INTERNAL_API | no | false | true registers the 12 UNOFFICIAL tools backed by the internal /rest/tests/1.0 API | |||
ZEPHYR_LOG_LEVEL | no | info | debug \ | info \ | warn \ | error |
Two guarantees the tests cover: JIRA_PAT and JIRA_PASSWORD never appear in logs, tool output or error messages — in any encoding they can take on the way out: raw, JSON-escaped, or the base64 basic-auth token (error text carries the method and path only — never the query string, which may contain data) — and stdout is reserved for the MCP protocol, every log line goes to stderr. One deliberate exception: a secret shorter than six characters is left alone, because redacting it would corrupt unrelated output while protecting nothing; the server warns about it at startup.
Configuration is validated at startup: all problems are reported at once and the process exits with a non-zero code rather than starting half-configured.
54 tools. The 42 public ones are always registered; the 12 in the last group only with ZEPHYR_ALLOW_INTERNAL_API=true.
Test cases — 13 tools
| Tool | What it does |
|---|---|
create_test_case | Create a case with a STEP_BY_STEP / PLAIN_TEXT / BDD script, parameters, custom fields, Call-to-Test steps |
get_test_case | Read a case, optionally narrowed by fields; step ids come back here |
search_test_cases | TQL search with pagination; a query longer than 1500 characters is sent as POST /testcase/search (which supports only projectKey, key, name) |
update_test_case | Partial update; testScript.steps is synchronized by id (see limitation 7) |
add_test_steps | Insert steps at a position without losing the existing ones — read, merge by id, write back |
set_test_script | Replace the whole script or change its format; destructive by design |
clone_test_case | Copy a case inside its project with fresh step ids; links, attachments and history are not copied |
move_test_cases_to_folder | Bulk-move by explicit keys or by source folder; a failing case does not abort the rest |
delete_test_case | Permanent delete of the case, its script and its history |
create_test_cases_bulk | Create many cases in one call, with a per-case fallback on broken bulk endpoints |
link_issues_to_test_cases | Bulk-link cases to Jira issues (additive) |
get_test_cases_linked_to_issue | Reverse lookup: issue → cases |
get_issue_test_coverage | Traceability report: issue → linked cases → latest execution of each |
Test cycles (test runs) — 7 tools
| Tool | What it does |
|---|---|
create_test_run | Create a cycle with its complete item list — optionally with each item's execution result in the same call |
get_test_run | Read a cycle including its items |
search_test_runs | TQL search — for runs only projectKey and folder are searchable |
delete_test_run | Permanent delete of the cycle and all its results |
get_test_run_results | Page through the executions of a cycle, with the legacy flat-endpoint fallback |
get_test_run_summary | Last execution per item: byStatus counts verbatim, executionProgressPct, passRatePct when a literal Pass status exists |
recreate_test_run_with_items | The public workaround for run immutability: rebuild under a new key with cases added or removed, optionally carrying the last results over and deleting the original |
Executions (test results) — 4 tools
| Tool | What it does |
|---|---|
create_test_result | Append a new execution to a run item, including per-step scriptResults |
update_last_test_result | Partial update of the most recent execution of an item |
create_test_results_bulk | Many executions for one cycle in a single call |
get_latest_result_for_test_case | The execution of a case with the greatest stored execution date, across all cycles — not necessarily the one recorded last |
Items that exist several times in a run (per environment or per assignee) are disambiguated with matchEnvironment / matchUserKey, sent as query parameters.
Test plans — 5 tools
| Tool | What it does |
|---|---|
create_test_plan | Create a plan; returns { key }, e.g. PROJ-P123 |
get_test_plan | Read a plan with its linked runs and issues |
update_test_plan | Partial update |
delete_test_plan | Permanent delete |
search_test_plans | TQL search; the searchable field set varies by Zephyr Scale version |
Folders — 2 tools
| Tool | What it does |
|---|---|
create_folder | Create a case / plan / cycle folder from a full path; with recursive (default true) a 400 on the full path triggers creating each parent prefix and one retry — 403, 409 and 5xx propagate untouched |
rename_folder | Rename one folder segment by its numeric id (and optionally set its custom fields) |
Attachments</b
只显示了开头部分;其余内容请在仓库中阅读