jira-xray-cloud-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| XRAY_TOOLS | No | Single tools to add to or remove from that selection (see below). | |
| FASTMCP_HOST | No | Host to bind the HTTP server, e.g., 0.0.0.0 | |
| FASTMCP_PORT | No | Port to bind the HTTP server, e.g., 8000 | |
| XRAY_TIMEOUT | No | HTTP timeout in seconds. | 60 |
| XRAY_BASE_URL | No | Regional hosts: https://us., https://eu., https://au.xray.cloud.getxray.app. | https://xray.cloud.getxray.app |
| XRAY_TOOLSETS | No | Which toolset halves to enable (see below). | default |
| XRAY_AUTH_MODE | No | env: one API key for the server, from XRAY_CLIENT_ID / XRAY_CLIENT_SECRET. headers: every HTTP request brings its own key (see Credentials). | env |
| XRAY_CLIENT_ID | No | Client id of an Xray API key (Xray → Global Settings → API Keys). env mode only. | |
| XRAY_READ_ONLY | No | true registers read tools only, whatever the selection says. Write tools do not exist on the server, and the HTTP client also refuses mutations and non-GET REST calls as a second safeguard. | false |
| FASTMCP_TRANSPORT | No | Transport for the MCP server, e.g., 'http' or 'stdio'. | |
| XRAY_CLIENT_SECRET | No | Client secret of that API key. Every call runs as the key's Jira user. env mode only. | |
| XRAY_MAX_DOWNLOAD_BYTES | No | Largest file that attachment/backup/export tools return inline. | 10485760 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| xray_get_testB | Get one Xray Test with its type, steps / Gherkin / unstructured definition, folder and Jira fields. |
| xray_get_testsA | Search Xray Tests by JQL, keys, project, test type or Test Repository folder (paginated). |
| xray_get_expanded_testA | Get a Test with 'Call Test' steps expanded inline into the steps of the called tests. |
| xray_get_test_versionsA | List the versions of a Test (ids for the version_id parameters of the other tools; paginated). |
| xray_get_datasetsA | Get the datasets (parameters and rows) of data-driven Tests, optionally as overridden on Test Plans / Executions. |
| xray_create_testB | Create an Xray Test issue (manual steps, Gherkin or unstructured definition). |
| xray_delete_testA | Delete a Test issue permanently (Jira issue included). |
| xray_update_test_typeB | Change the test type of a Test (e.g. Manual -> Cucumber). |
| xray_update_test_definitionA | Replace the Gherkin or unstructured definition of a Test. Use the step tools for manual tests. |
| xray_add_test_stepC | Append a step to a manual Test. |
| xray_update_test_stepB | Update action, data and/or expected result of a manual test step. |
| xray_remove_test_stepB | Remove one step from a manual Test. |
| xray_remove_all_test_stepsB | Remove all steps from a manual Test. |
| xray_add_test_associationsB | Link one Test to Preconditions, Test Sets, Test Plans and/or Test Executions. |
| xray_remove_test_associationsA | Unlink one Test from Preconditions, Test Sets, Test Plans and/or Test Executions. |
| xray_get_preconditionB | Get a Precondition with its type, definition, folder and the Tests it is linked to. |
| xray_get_preconditionsA | Search Preconditions by JQL, keys, project or type (paginated). |
| xray_create_preconditionB | Create a Precondition issue, optionally linked to Tests. |
| xray_update_preconditionC | Update type, definition and/or folder of a Precondition. |
| xray_delete_preconditionB | Delete a Precondition issue permanently. |
| xray_add_tests_to_preconditionC | Link Tests to a Precondition. |
| xray_remove_tests_from_preconditionB | Unlink Tests from a Precondition. |
| xray_get_test_setB | Get a Test Set with the Tests it contains. |
| xray_get_test_setsB | Search Test Sets by JQL, keys or project (paginated). |
| xray_create_test_setB | Create a Test Set issue, optionally with Tests. |
| xray_delete_test_setA | Delete a Test Set issue permanently (the Tests are kept). |
| xray_add_tests_to_test_setC | Add Tests to a Test Set. |
| xray_remove_tests_from_test_setC | Remove Tests from a Test Set. |
| xray_get_test_planB | Get a Test Plan with its Tests, Test Executions and folder structure. |
| xray_get_test_plansB | Search Test Plans by JQL, keys or project (paginated). |
| xray_create_test_planC | Create a Test Plan issue, optionally with Tests (e.g. fixVersions via extra_fields). |
| xray_delete_test_planB | Delete a Test Plan issue permanently. |
| xray_add_tests_to_test_planC | Add Tests to a Test Plan. |
| xray_remove_tests_from_test_planC | Remove Tests from a Test Plan. |
| xray_add_test_executions_to_test_planC | Associate Test Executions with a Test Plan. |
| xray_remove_test_executions_from_test_planC | Remove Test Executions from a Test Plan. |
| xray_get_test_executionB | Get a Test Execution with environments, Test Plans and its test runs (test + status). |
| xray_get_test_executionsA | Search Test Executions by JQL, keys or project (paginated). |
| xray_create_test_executionA | Create a Test Execution issue with Tests (one test run per Test). Link it to a plan via the test_plans tools. |
| xray_delete_test_executionA | Delete a Test Execution issue permanently, including its test runs. |
| xray_add_tests_to_test_executionA | Add Tests to a Test Execution (creates a test run per Test). |
| xray_remove_tests_from_test_executionA | Remove Tests from a Test Execution, deleting their test runs. |
| xray_add_test_environmentsA | Add Test Environments to a Test Execution; unknown environments are created. |
| xray_remove_test_environmentsC | Remove Test Environments from a Test Execution. |
| xray_get_test_runA | Get one test run in full detail (steps, evidence, defects, examples, iterations), by id or by Test + Test Execution. |
| xray_get_test_runsB | Search test runs by Tests, Test Executions, Test Plans, assignees or statuses (paginated). |
| xray_get_test_progressA | Count the Tests of a Test Plan or Test Execution per status, e.g. to answer 'how far along is it?'. |
| xray_update_test_runC | Update a test run: status, comment, timestamps, assignee, executor and custom fields. |
| xray_reset_test_runA | Reset a test run to its initial state, discarding status, comments, evidence and step results. |
| xray_set_test_run_timerB | Start, pause or reset the execution timer of a test run. |
| xray_update_test_run_defectsB | Link and/or unlink defects on a test run. |
| xray_add_test_run_evidenceB | Attach evidence files (base64 or uploaded attachment ids) to a test run. |
| xray_remove_test_run_evidenceB | Remove evidence from a test run by id and/or filename. |
| xray_update_test_run_stepB | Record the result of one test run step: status, comment, actual result, defects and evidence. |
| xray_update_test_run_iteration_statusB | Set the status of one iteration of a data-driven test run. |
| xray_update_test_run_example_statusB | Set the status of one Cucumber Scenario Outline example in a test run. |
| xray_get_folderA | Get a folder with its counts and complete subfolder tree. Use xray_get_tests(folder_path=...) for its Tests. |
| xray_create_folderA | Create a folder in a project's Test Repository or in a Test Plan, optionally with Tests. |
| xray_rename_folderC | Rename a folder. |
| xray_move_folderB | Move a folder (with its content) below another folder. |
| xray_delete_folderA | Delete a folder and its subfolders. The Test / Precondition issues in it are not deleted. |
| xray_move_to_folderA | Move Tests (and, in the Test Repository, Preconditions) into a folder. |
| xray_remove_from_folderA | Take Tests / Preconditions out of their folder. The issues themselves are not deleted. |
| xray_get_coverable_issueB | Get the coverage status of a requirement / story and the Tests covering it. |
| xray_get_coverable_issuesB | Search coverable issues (requirements, stories...) with their coverage status (paginated). |
| xray_get_issue_historyA | Get the Xray change history of an issue: who changed what (steps, definition, links...) and when (paginated). |
| xray_get_statusesA | List the test run statuses and step statuses available (globally or for a project). |
| xray_get_issue_link_typesA | List the Jira issue link types known to Xray (used for requirement coverage). |
| xray_get_project_settingsA | Get Xray project settings: test types, test environments, coverage, step fields, test run custom fields. |
| xray_get_step_libraryC | Search the reusable manual or BDD (Gherkin) step library. |
| xray_get_import_tests_statusA | Get status, progress and per-test results/errors of a bulk test import job. |
| xray_export_cucumber_featuresB | Export Cucumber Tests as .feature files; returns each file's name and content. |
| xray_import_execution_results_jsonA | Import JSON test results into Xray, creating or updating a Test Execution. Xray JSON can target an existing execution via "testExecutionKey" or describe a new one in "info". Pass test_execution_info to control all Jira fields of the created Test Execution (multipart import). |
| xray_import_execution_results_xmlA | Import an XML test report (JUnit, TestNG, NUnit, xUnit, Robot Framework) into Xray. Either use the simple parameters (project_key, test_execution_key, ...), or pass test_execution_info / test_info for full control over the created issues (multipart import). |
| xray_import_tests_bulkA | Start an asynchronous bulk import of Tests. Poll xray_get_import_tests_status with the returned jobId. |
| xray_import_cucumber_featuresB | Create or update Cucumber Tests and Preconditions from .feature files (single file or zip). |
| xray_get_attachmentA | Download an attachment or evidence file; text files come back as text, others as base64. |
| xray_upload_attachmentB | Upload a file; the returned id can be used as attachment_id in evidence / step attachments. |
| xray_graphql_schemaB | Look up the Xray GraphQL schema: signatures and field docs of queries, mutations and types. |
| xray_graphql_queryA | Run a read-only Xray GraphQL query. Entities are addressed by issue id; every list needs limit (max 100). |
| xray_graphql_mutationB | Run an Xray GraphQL mutation not covered by a dedicated tool. |
| xray_list_toolsetsA | List all Xray toolsets (read and write halves), which tools are enabled, and whether the server is read-only. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 82 tools
Descriptions are generally precise, but the large surface creates several close pairs and groups: get_test/get_tests/get_expanded_test, get_test_run/get_test_runs, and the multiple test-run update variants. These boundaries are mostly explained, yet an agent can still misselect among similar read/update operations.
Tool names follow a highly consistent xray_verb_noun pattern across the entire set, including create_, get_, add_, remove_, update_, import_, and export_ actions. The convention is predictable and readable throughout.
At 82 tools, the set is far beyond a practical MCP surface and hits the extreme-mismatch threshold. Even for a broad domain like Xray test management, this volume makes discovery, selection, and maintenance unnecessarily difficult.
The surface covers the full Xray lifecycle: tests, preconditions, test sets, plans, executions, runs, folders, coverage, imports/exports, attachments, history, settings, and GraphQL escape hatches. There are no obvious dead ends for the stated domain.