Integrates with Zephyr Scale for Jira to fetch and update test case information, including test steps, labels, objectives, priorities, and other metadata.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Zephyr Scale MCP ServerShow me the test steps and priority for RADAR-T1"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Zephyr Scale MCP Server
Model Context Protocol (MCP) server that integrates with Zephyr Scale test management tool for Jira. This server allows Claude Desktop and other MCP clients to fetch and update test case information directly from Zephyr Scale.
→ - Get up and running in 5 minutes
Features
Read Operations:
Fetch test case information with steps, labels, details, priority, and status
Get complete raw test case object from API
Write Operations:
Update test case labels
Update any test case field (objective, precondition, priority, etc.)
Automatic handling of mandatory fields
Developer Friendly:
Support for both WSL2 and Windows environments
Easy integration with Claude Desktop
Natural language interactions in chat
Prerequisites
Node.js (v16 or higher)
npm or yarn
Zephyr Scale API token
TypeScript (included as dev dependency)
For WSL2 users: WSL2 with Ubuntu or similar distro
Installation
Clone or navigate to the project directory:
cd /path/to/mcp-zephyrInstall dependencies:
npm installBuild the TypeScript code:
npm run buildConfiguration
1. Get Your Zephyr Scale API Token
Log in to your Jira/Zephyr Scale account
Navigate to API token settings
Generate a new API token
Copy the token for the next step
2. Configure Claude Desktop
For detailed step-by-step instructions, see the
Edit your Claude Desktop configuration file:
Windows:
C:\Users\YourUsername\AppData\Roaming\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
WSL2 Configuration Example:
{
"mcpServers": {
"zephyr-steps-server": {
"command": "wsl",
"args": [
"bash",
"-c",
"cd /home/username/mcpServers/mcp-zephyr && ZEPHYR_API_KEY='your_token' /path/to/node dist/index.js"
]
}
}
}Windows Configuration Example:
{
"mcpServers": {
"zephyr-steps-server": {
"command": "node",
"args": ["C:\\Users\\YourUsername\\mcp-zephyr\\dist\\index.js"],
"env": {
"ZEPHYR_API_KEY": "your_zephyr_api_token_here"
}
}
}
}See QUICK_START.md for complete configuration examples and troubleshooting.
Usage
With Claude Desktop
Once configured in Claude Desktop, restart the application. The tools will be available for use in your chat.
Fetching Test Case Information
Ask Claude naturally:
Get the test steps for RADAR-T1Show me test case RDR-T23 with all detailsWhat are the labels on RADAR-T5?Returns:
Test case name and key
All labels
Objective/description
Preconditions
Priority and status
Complete test steps with instructions and expected results
Updating Test Case Labels
Ask Claude to update labels:
Update labels for RADAR-T1 to: smoke-test, regression, automatedSet labels for RDR-T23 to: critical, P1Remove all labels from RADAR-T5Note: When updating labels, Claude will first fetch the current test case information to understand the context, then update the labels.
Updating Other Test Case Fields
For advanced updates (objective, precondition, priority, etc.):
Update the objective for RADAR-T1 to "Verify login functionality with valid credentials"Change the priority of RDR-T23 to HighClaude will:
Fetch the complete test case details
Modify the requested fields
Update the test case with all mandatory fields intact
Available Tools
get_zephyr_steps
Fetches complete test case information including labels, details, and test steps from Zephyr Scale.
Input:
testCaseKey(string): The test case ID (e.g., "RADAR-T1")
Output:
JSON object containing:
testCaseKey: Test case IDname: Test case namelabels: Array of labels assigned to the test caseobjective: Test objective/description from Detailsprecondition: Prerequisites for the testpriority: Priority levelstatus: Current test case statussteps: Array of test steps with:index: Step numberinstruction: Step descriptionexpectedResult: Expected outcometestData: Test data (if applicable)
update_test_case_labels
Updates the labels for a specific test case in Zephyr Scale.
Input:
testCaseKey(string): The test case ID (e.g., "RADAR-T1")labels(array of strings): List of labels to set for the test case
Output:
Success message confirming the labels were updated
Important Notes:
This tool REPLACES all existing labels with the new list provided
To add a label, you must include all existing labels plus the new one
To remove a label, provide the list without it
To remove all labels, provide an empty array
[]
Example Usage:
"Update RADAR-T1 labels to: smoke-test, regression, high-priority"
"Set labels for RADAR-T5 to: critical, P1"
"Remove all labels from RADAR-T10"
get_test_case_details
Fetches the complete raw test case object from Zephyr Scale API.
Input:
testCaseKey(string): The test case ID (e.g., "RADAR-T1")
Output:
Complete JSON object with all test case fields as returned by Zephyr API
Use Case:
Get the full test case structure including all mandatory fields
Useful before making updates to ensure all required fields are present
Returns raw API response for maximum flexibility
update_test_case
Updates a test case with a complete payload to satisfy mandatory field requirements.
Input:
testCaseKey(string): The test case ID (e.g., "RADAR-T1")payload(object): The complete test case object with modified fields
Output:
Success message confirming the update
Workflow:
Use
get_test_case_detailsto fetch the current test caseModify the desired fields in the returned object
Use
update_test_casewith the modified object
Important Notes:
Zephyr API requires all mandatory fields to be present in PUT requests
This tool accepts the complete payload to avoid "missing mandatory field" errors
Best practice: Always fetch details first, then update
Example Usage:
"Update the objective for RADAR-T1 to 'Test login functionality'"
"Change priority of RDR-T23 to High"
"Update precondition for RADAR-T5"
Development
Build
Compile TypeScript to JavaScript:
npm run buildWatch Mode
Automatically recompile on changes:
npm run watchProject Structure
mcp-zephyr/
├── dist/ # Compiled JavaScript (generated, gitignored)
│ ├── index.js # Main MCP server (compiled)
│ └── index.d.ts # TypeScript definitions
├── node_modules/ # Dependencies (gitignored)
├── index.ts # Source code - MCP Server implementation
├── package.json # Node.js dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── .gitignore # Git ignore rules
├── QUICK_START.md # Quick start guide (5-minute setup)
├── README.md # Complete documentation (this file)
└── CLAUDE.md # Claude Code project instructionsAPI Integration
Base URL:
https://api.zephyrscale.smartbear.com/v2Endpoints:
GET /testcases/{testCaseKey}- Fetch test case details, labels, and metadataGET /testcases/{testCaseKey}/teststeps- Fetch test stepsPUT /testcases/{testCaseKey}- Update test case details (including labels)
Authentication: Bearer token via Authorization header
Troubleshooting
For common issues and solutions, see the
"ZEPHYR_API_KEY environment variable is not set"
Make sure you have set the ZEPHYR_API_KEY correctly in your Claude Desktop configuration.
WSL2: Set it in the bash command: ZEPHYR_API_KEY='your_token'
Windows: Set it in the env section of the config
"Server disconnected" or "Cannot attach to MCP server"
Check the logs:
C:\Users\YourUsername\AppData\Roaming\Claude\logs\mcp-server-zephyr-steps-server.logCommon causes:
Incorrect Node.js path (WSL2 users: use full path like
/home/user/.nvm/versions/node/v22.17.1/bin/node)Missing
dist/index.jsfile (runnpm run build)Invalid API token
"Cannot find module" errors
Run npm install to ensure all dependencies are installed, then rebuild:
npm install
npm run build"node: command not found" (WSL2 only)
When using WSL2, don't use just node - use the full path to your Node.js binary:
# Find your node path
which node
# Use that full path in claude_desktop_config.jsonLicense
ISC
Support
For issues or questions, refer to the MCP SDK documentation or Zephyr Scale API documentation.