QTM4J MCP Server
The QTM4J MCP Server provides 42 tools to interact with QMetry Test Management for Jira (QTM4J), enabling full lifecycle management of test assets. All tools support pagination, input validation, automatic retry on rate limits, and optional markdown response format.
Test Cases
Create, retrieve, search, update, delete, and clone test cases
Create and update individual test steps (with step details, expected results, and test data)
Test Cycles
Create, retrieve, search, update, and delete test cycles
Test Executions
List all executions within a test cycle
Update a single execution result (Pass, Fail, Blocked, WIP, Not Executed)
Update step-level execution results
Bulk update multiple executions with the same result, environment, or build
Test Plans
Create, retrieve, search, update, and delete test plans
Link/unlink test cycles to a plan and retrieve all linked cycles
Folders
List folders by type (TESTCASE, TESTCYCLE, TESTPLAN) as a nested tree
Create new folders under a parent or at root level
Automation
Link/unlink automation rules to test cycles
Trigger automation rules against a specific test cycle
Metadata (Read-only)
Retrieve projects, priorities, statuses, environments, builds, labels, components, execution results, custom fields, parameters, and user permissions
Mentions that the Swagger spec does not currently document a framework-style automation import-result endpoint for Cucumber ingestion, indicating awareness of but not direct integration with Cucumber test automation framework.
Provides tools for interacting with QMetry Test Management for Jira Cloud (QTM4J) REST API, enabling AI agents to manage test cases, test cycles, test executions, test plans, folders, and automation rules within QMetry's test management platform.
Integrates with QMetry Test Management for Jira Cloud (QTM4J), providing tools to manage test cases, test cycles, test executions, test plans, and automation rules that are linked to Jira projects. Note: projectId must be the numeric Jira project ID, not the project key.
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., "@QTM4J MCP Serversearch for test cases in project 10011 with status Approved"
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.
QTM4J MCP Server
An MCP server with 42 tools for QMetry Test Management for Jira (QTM4J). Search and manage test cases, cycles, executions, plans, folders, automation rules, and project metadata from Claude Desktop, Claude Code, VS Code Copilot, Cursor, or any MCP-compatible client.
Distribution:
npm:
qtm4j-mcp-serverMCP Registry:
io.github.salehrifai42/qtm4j-mcp-serverGitHub:
salehrifai42/qmetrymcp
Quick start (no clone required)
You need a QMetry API key (QMetry → API Keys) and Node.js 18+.
Claude Desktop
Edit your config file and restart Claude:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"qtm4j": {
"command": "npx",
"args": ["-y", "qtm4j-mcp-server@^0.1"],
"env": {
"QTM4J_API_KEY": "your-api-key-here",
"QTM4J_REGION": "US"
}
}
}
}Claude Code (CLI)
claude mcp add qtm4j -e QTM4J_API_KEY=your-api-key-here -e QTM4J_REGION=US -- npx -y qtm4j-mcp-server@^0.1VS Code (GitHub Copilot Agent mode)
Create .vscode/mcp.json in your workspace:
{
"servers": {
"qtm4j": {
"type": "stdio",
"command": "npx",
"args": ["-y", "qtm4j-mcp-server@^0.1"],
"env": {
"QTM4J_API_KEY": "${env:QTM4J_API_KEY}",
"QTM4J_REGION": "US"
}
}
}
}Switch Copilot Chat to Agent mode and the qtm4j_* tools appear automatically.
Cursor
Add to ~/.cursor/mcp.json (or <project>/.cursor/mcp.json for project-level):
{
"mcpServers": {
"qtm4j": {
"command": "npx",
"args": ["-y", "qtm4j-mcp-server@^0.1"],
"env": { "QTM4J_API_KEY": "your-api-key-here" }
}
}
}The example configs above pin the package to
^0.1so a future breaking release won't auto-upgrade you. Drop the@^0.1suffix if you'd rather always run the latest.
Global install (faster startup)
npx re-resolves the package on every launch, which adds a few seconds of startup latency. If you use the server frequently, install it globally and point your client at the binary directly:
npm install -g qtm4j-mcp-serverThen in your client config, replace the npx command:
{
"mcpServers": {
"qtm4j": {
"command": "qtm4j-mcp-server",
"env": {
"QTM4J_API_KEY": "your-api-key-here",
"QTM4J_REGION": "US"
}
}
}
}Tradeoff: instant startup and works offline, but you'll need to run npm update -g qtm4j-mcp-server to get new versions.
Configuration
Variable | Required | Default | Description |
| yes | — | QMetry API key, sent on every request as the |
| no |
|
|
💡 Set
QTM4J_REGION=AUif your QMetry instance is on the Sydney cluster.
Tools
All tools are prefixed with qtm4j_ to avoid collisions with other MCP servers.
Area | Tools |
Test Cases |
|
Test Cycles |
|
Test Executions |
|
Test Plans |
|
Folders |
|
Automation |
|
Metadata (read-only) |
|
See docs/TOOLS.md for the full reference and docs/COOKBOOK.md for example prompts colleagues can paste into any MCP client.
Every tool ships with annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) so clients can decide whether to ask for confirmation. Read tools accept a response_format parameter (json default, or markdown for human-readable output). Large responses are automatically truncated at 25k characters with a hint to narrow the query.
All tools validate inputs with Zod, paginate via startAt/maxResults, and automatically retry rate-limited (HTTP 429) responses with exponential back-off (up to 3 attempts).
Trying it out
Once connected, ask your assistant something like:
Search QMetry project
<your project ID>for test cases with status "To Do" and show me the first 5.
The client will call qtm4j_search_test_cases and render the response.
Get all executions in test cycle FS-TR-747 and mark any unexecuted ones as Pass.
Example tool calls
Replace
10011below with your numeric Jira project ID. Find it in the project URL:…?projectId=10011&projectKey=FS.
// Search test cases
{
"name": "qtm4j_search_test_cases",
"arguments": {
"projectId": 10011,
"status": ["Approved"],
"maxResults": 20,
"response_format": "markdown"
}
}
// Update an execution result
// (executionResultId: 239444=Pass, 239441=Fail, 239443=Not Executed)
{
"name": "qtm4j_update_test_execution",
"arguments": {
"cycleId": "gxMbioKJsyEr3E",
"testCaseExecutionId": 287595809,
"executionResultId": 239444,
"comment": "Verified on staging"
}
}Troubleshooting
Tools don't appear in my client. Restart the client after editing config. Check
claude mcp list(Claude Code) or VS Code's MCP panel for connection status. On first run,npx -y qtm4j-mcp-servermay take a few seconds to download the package.401 Unauthorized. Your
QTM4J_API_KEYis invalid or expired. Generate a new one in QMetry → API Keys.404 on execution or search endpoints. Many endpoints want the internal numeric
id, not the human key likeFS-TR-747. Callqtm4j_get_test_cyclefirst to translate the key into the internal id.Empty or oversized folder response. Pass
folderIdtoqtm4j_list_foldersto scope to a subtree — full project trees on large projects can exceed the response size limit.projectIdrejected. Use the numeric Jira project ID (e.g.10011), not the project key ("FS"). You can find it in the Jira project URL:…?projectId=10011&projectKey=FS.
Notes
Search endpoints use
POST /…/search— filters go in the body underfilter, pagination/sort on the query string. Tool handlers wrap this for you.204 No Contentresponses resolve as{ message: "…" }.The Swagger spec does not currently document a framework-style automation import-result endpoint (e.g. JUnit/TestNG/Cucumber ingestion); the automation tools cover the rules-run and rule-link flows exposed in the spec.
Development
Local setup if you want to modify the server:
git clone https://github.com/salehrifai42/qmetrymcp.git
cd qmetrymcp
npm install
npm run build
QTM4J_API_KEY=your-key npm startTest changes with the MCP Inspector:
QTM4J_API_KEY=your-key npx @modelcontextprotocol/inspector node dist/index.jsBugs and contributions
Found a bug or want to suggest a feature? Open an issue at https://github.com/salehrifai42/qmetrymcp/issues. PRs welcome.
License
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/salehrifai42/qmetrymcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server