GitHub
server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Zephyr Scale on self-hosted Jira Server/DC: test cases, cycles, executions, plans and attachments
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม 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": "ใส่ค่าของคุณ",
"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": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add zephyr-scale --env JIRA_BASE_URL='ใส่ค่าของคุณ' --env JIRA_PAT='ใส่ค่าของคุณ' --env JIRA_AUTH='ใส่ค่าของคุณ' --env JIRA_USERNAME='ใส่ค่าของคุณ' --env JIRA_PASSWORD='ใส่ค่าของคุณ' --env ZEPHYR_DEFAULT_PROJECT_KEY='ใส่ค่าของคุณ' --env ZEPHYR_ALLOW_INTERNAL_API='ใส่ค่าของคุณ' --env ZEPHYR_READONLY='ใส่ค่าของคุณ' --env JIRA_TLS_REJECT_UNAUTHORIZED='ใส่ค่าของคุณ' --env JIRA_TIMEOUT_MS='ใส่ค่าของคุณ' --env JIRA_MAX_RETRIES='ใส่ค่าของคุณ' --env ZEPHYR_LOG_LEVEL='ใส่ค่าของคุณ' -- 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": "ใส่ค่าของคุณ",
"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": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"zephyr-scale": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"zephyr-scale-mcp"
],
"env": {
"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": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
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ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub vilaabo ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: JIRA_BASE_URL, JIRA_PAT, JIRA_PASSWORD
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.0.0) เข้า registry 3 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี GitHub, Desktop Commander, Cloudflare MCP
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ 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
ตัดมาแค่ช่วงต้น อ่านต่อใน repo