
Qtm4j Mcp Server
io.github.salehrifai42Published by GitHub account salehrifai42v0.1.1Updated Oct 24, 2026
MCP server for QMetry Test Management for Jira (QTM4J): test cases, cycles, executions, plans.
Overview
MCP server exposing 87 tools for QMetry Test Management for Jira (QTM4J), letting an assistant search and manage test cases, cycles, executions and plans.
- What you can do
- Search, create, update, delete, archive and clone test cases, including test steps
- Manage test cycles and test plans, and link or unlink cycles to plans
- Read and update test executions and step executions, bulk-update results, and upload, list or delete execution attachments
- Add, edit and delete comments on test cases, cycles and plans
- Link and unlink defects on executions and step executions, and read cycle defect summaries
- List and create folders, link or run automation rules, and read project metadata such as statuses, priorities, builds, labels, components and custom fields
- When to use it
- Useful when a team keeps its testing in QMetry Test Management for Jira and wants an assistant to query or update test cases, cycles, plans and execution results from a chat client instead of the web UI. Also handy for bulk execution updates and for importing Excel test cases through the bundled workflow.
- Requirements
- Runs locally over stdio via the npm package qtm4j-mcp-server, requiring Node.js 18 or later. Needs a QMetry API key in the QTM4J_API_KEY environment variable, generated in QMetry under API Keys. The optional QTM4J_REGION variable selects the US (default) or AU cluster. Network access to the QMetry cloud endpoint is required.
Installation
In SourceWeft
- Open Qtm4j Mcp Server in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
QTM4J MCP Server
[npm] [npm downloads] [Node] [License]
An MCP server with 87 tools for QMetry Test Management for Jira (QTM4J). Search and manage test cases, cycles, executions, plans, folders, comments, defects, automation rules, and project metadata from Claude Desktop, Claude Code, VS Code Copilot, Cursor, or any MCP-compatible client.
Distribution:
- npm:
qtm4j-mcp-server - MCP Registry:
io.github.salehrifai42/qtm4j-mcp-server - GitHub:
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.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Claude Code (CLI)
VS Code (GitHub Copilot Agent mode)
Create .vscode/mcp.json in your workspace:
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):
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:
Then in your client config, replace the npx command:
Tradeoff: instant startup and works offline, but you'll need to run npm update -g qtm4j-mcp-server to get new versions.
Configuration
💡 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.
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
<KEY>-TR-747and mark any unexecuted ones as Pass.
Example tool calls
Replace
<projectId>and<KEY>with your tenant's numeric Jira project ID and project key. Find them in the project URL:…?projectId=<projectId>&projectKey=<KEY>. Useqtm4j_get_execution_resultsto discover your tenant'sexecutionResultIdvalues.
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 like<KEY>-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, not the project key string. You can find it in the Jira project URL:…?projectId=<numeric-id>&projectKey=<KEY>.
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:
Test changes with the MCP Inspector:
Run the unit tests (no API key or network needed — the HTTP client's transport is faked in-memory):
Replicating the bulk xlsx import workflow
The repo ships a Claude Code skill (.claude/skills/xlsx-to-qmetry/) and a Python importer (scripts/import-xlsx-to-qmetry.py) for pushing folders of Excel test cases into QMetry. Tenant-specific IDs (project, parent folder, status, custom-field IDs, components) are kept out of git — you supply them in your own config.json.
First-run after cloning:
Discover the IDs you need with the running MCP server (qtm4j_get_projects, qtm4j_get_statuses, qtm4j_get_components, qtm4j_get_custom_fields, qtm4j_list_folders) or with node scripts/refresh-field-reference.mjs to dump everything to field_reference.json.
Then launch Claude Code from the repo root and the xlsx-to-qmetry skill auto-loads. Drop your workbooks under Input/<batch-name>/ and ask Claude to import them — see docs/EXCEL-IMPORT-GUIDE.md for the full workflow.
Bugs and contributions
Found a bug or want to suggest a feature? Open an issue at https://github.com/salehrifai42/qmetrymcp/issues. PRs welcome.
License
Source: README.md at commit a5a0e2a
Tools
0Version history
1- v0.1.1LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts