Model Context Protocol (MCP) server for Zephyr Scale test case management with comprehensive STEP_BY_STEP, PLAIN_TEXT, and BDD support
The server defines 12 tools with explicit schemas in src/tool-schemas.ts. All tools have names starting with action verbs (get_, create_, update_, delete_, search_, add_), which is correct per naming patterns. Descriptions are present for all tools and range from 84 - 342 characters, which is within the recommended 10 - 1024 character band. However, most descriptions lack actionable specificity, they do not explain WHEN to use each tool vs. similar alternatives, DO NOT document prerequisites or dependencies, and do not provide recovery guidance for failure modes. Parameter descriptions exist but are often generic ('required', 'optional') without format constraints, allowed ranges, or examples of valid values. Schemas are properly typed JSON Schema (object, string, array, number) with properties and required arrays declared. Output schemas are NOT documented anywhere in the visible code, LLMs cannot infer what fields get_test_case or create_test_case return, making downstream tool chaining risky. Error handling is listed as present (errorReporting=true) but implementation details are not visible in the provided source. The create_test_case tool is complex with nested objects (test_script.steps, parameters.variables) but lacks validation hints for the nested structure, increasing the risk of LLM misuse. BDD-specific guidance in create_test_case and update_test_case_bdd descriptions is helpful but could be more explicit about format conversion ('markdown will be converted to Gherkin'). Resource hints (e.g., 'use zephyr://testcase/EXISTING-KEY resource') are present and positive. Overall: descriptions and schemas exist but lack depth, actionability, and output documentation.
Add test cases to an existing test run
Create a new folder in Zephyr Scale. On Cloud: provide a path like "/Parent/Child" — the server resolves parent segments and creates the leaf folder. On Data Center: the full path is sent directly.
Create a new test case with STEP_BY_STEP, PLAIN_TEXT, or BDD content. To match your project's structure, use the zephyr://testcase/EXISTING-KEY resource to fetch a real test case and use its structure as a template, especially for custom_fields.
Create a new test run
Delete a specific test case (Data Center only — not supported on Cloud v2)
Delete a specific test run
Get folders from Zephyr Scale. All parameters are optional. If folder_path is provided, returns the full subtree (the folder and all its descendants at every depth) under that path. Otherwise returns all folders matching the filters.
No output schemas documented for any tool. LLMs cannot predict what fields are returned (e.g., does get_test_case return 'status', 'state', or 'testStatus'?). This breaks downstream tool chaining and forces agents to make discovery calls.
Descriptions lack actionable recovery guidance. delete_test_case says 'Delete a specific test case' (29 chars) without mentioning: is this reversible? Should the LLM warn the user? What happens to linked test runs? Agents need explicit guidance.
Parameter descriptions are generic ('required', 'optional') without format constraints or valid value ranges. E.g., 'max_results' in search_test_cases_by_folder lacks min/max bounds, inviting LLMs to pass absurd values (0, 999999).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 14 | 2026-07-28+ | v2 |
| 2026-03-09 | C | 60 | - | v1 |
Get detailed information about a specific test case
Get test cycles linked to a Jira issue
Get detailed information about a specific test execution
Get detailed information about a specific test run
Get test case keys from a test run
List all test executions in a test cycle
Search for test cases within a folder
Search for test runs with optional filters
Update an existing test case with BDD content. Optionally update the test case name. Unspecified fields are preserved.
Update an existing test execution with status, comment, and other details
Update an existing test run
Nested object schemas (test_script.steps, parameters.variables, custom_fields) lack clear examples of valid structure. The custom_fields note ('Use the zephyr://testcase/EXISTING-KEY resource') is helpful but puts the burden on the LLM to fetch and parse examples.
No explicit idempotency or side-effect documentation. Which tools are safe to retry? Is create_test_case idempotent if called twice with the same name and project? Agents need to know for error recovery.
Pagination support is unclear. search_test_cases_by_folder and search_test_runs accept max_results but do not document whether they return a cursor, offset, or total count for follow-up calls. Large result sets risk context overflow.
No permission/scope declarations visible. Which tools require write vs. read permissions? Can an agent be configured with minimal privileges? Audit trail support is not evident.