An MCP (Model Context Protocol) server that connects AI assistants to Xray Cloud for Jira test management.
Manage tests, test plans, executions, and import CI results — all through natural language via Claude or any MCP-compatible client.
| Category | Tools |
|---|---|
| Tests | list_tests, get_test, create_test, update_test |
| Test Plans | list_test_plans, get_test_plan, create_test_plan, add_tests_to_test_plan |
| Test Executions | list_test_executions, get_test_execution, create_test_execution |
| Test Sets | list_test_sets, get_test_set |
| Test Runs | update_test_run_status |
| Import Results | Xray JSON, Cucumber, JUnit, TestNG, NUnit, Robot Framework, Behave |
| Import Features | Gherkin .feature files |
| Export | Cucumber feature files |
git clone https://github.com/remynln/mcp-xray-cloud.git
cd mcp-xray-cloud
npm install
npm run build- Node.js 18+
- An Xray Cloud API key pair (how to generate)
Set these environment variables:
| Variable | Required | Description |
|---|---|---|
XRAY_CLIENT_ID |
Yes | Xray Cloud API client ID |
XRAY_CLIENT_SECRET |
Yes | Xray Cloud API client secret |
XRAY_BASE_URL |
No | Override API base URL (default: https://xray.cloud.getxray.app) |
Add to your claude_desktop_config.json:
{
"mcpServers": {
"xray": {
"command": "node",
"args": ["/absolute/path/to/mcp-xray-cloud/dist/index.js"],
"env": {
"XRAY_CLIENT_ID": "your-client-id",
"XRAY_CLIENT_SECRET": "your-client-secret"
}
}
}
}Add to your .claude.json:
{
"mcpServers": {
"xray": {
"command": "node",
"args": ["/absolute/path/to/mcp-xray-cloud/dist/index.js"],
"env": {
"XRAY_CLIENT_ID": "your-client-id",
"XRAY_CLIENT_SECRET": "your-client-secret"
}
}
}
}- list_tests — List tests with JQL filtering by project, labels, and component
- get_test — Get full test details including steps and preconditions
- create_test — Create Manual, Cucumber, or Generic tests
- update_test — Update test type (Jira field updates require Jira REST API credentials)
- list_test_plans — List test plans in a project
- get_test_plan — Get test plan details with associated tests
- create_test_plan — Create a new test plan
- add_tests_to_test_plan — Associate tests with a test plan
- list_test_executions — List test executions in a project
- get_test_execution — Get execution details with test run statuses
- create_test_execution — Create an execution, optionally linked to a test plan
- update_test_run_status — Set a test run to PASSED, FAILED, TODO, EXECUTING, or ABORTED
- import_execution_results — Xray JSON format
- import_cucumber_results — Cucumber JSON
- import_junit_results — JUnit XML
- import_testng_results — TestNG XML
- import_nunit_results — NUnit XML
- import_robot_results — Robot Framework XML
- import_behave_results — Behave JSON
- import_feature_file — Gherkin
.featurefile
- export_cucumber_features — Export Cucumber feature files from Xray tests
src/
├── index.ts # Server entry point
├── client.ts # Xray Cloud API client (auth + GraphQL + REST)
├── helpers.ts # Shared formatting utilities
└── tools/
├── tests.ts # Test CRUD tools
├── test-plans.ts # Test plan tools
├── test-executions.ts# Test execution tools
├── test-sets.ts # Test set tools
├── test-runs.ts # Test run status updates
├── imports.ts # Result import tools (JSON, XML, Gherkin)
└── exports.ts # Feature export tools
- Fork the repo
- Create a feature branch (
git checkout -b feat/my-feature) - Run tests (
npm test) - Commit your changes
- Open a pull request