UT

uarlouski/testrail-mcp-server

Developer tools
43 stars 5 forks Quality 88 Trend 48Apache-2.0

AI-native MCP server connecting Claude, Cursor, Windsurf, and other AI assistants to TestRail — manage test cases, runs, and results through natural-language conversation, with typed schemas built...

Overview

🚀 TestRail MCP Server An open-source Model Context Protocol (MCP) server that connects Claude, Cursor, Windsurf, and other AI assistants directly to TestRail. Manage TestRail projects, search and create test cases, kick off test runs, record results, and attach files — all through natural-language conversation with your AI assistant. Built for QA engineers and AI-assisted test automation. Managing test cases manually is tedious and error-prone. With the , your AI assistant (whether it’s , or any MCP-compliant client) interacts directly with your TestRail instance. Instruct it to find test cases, draft new ones, kick off test runs, and record test results—all through natural conversation. : The primary baseline version this MCP server is tested and validated against is (API v2). Older TestRail instances (including pre-7.x pagination) are also supported via built-in backward compatibility. Navigate to in your TestRail platform and generate a new key for authentication.

README

Compatible with:

📚 Documentation · Getting Started · Tool Reference · FAQ


What is the TestRail MCP Server?

The TestRail MCP Server is a free, open-source Model Context Protocol server that gives AI assistants direct, structured access to a TestRail instance through the TestRail API v2. Once configured, an assistant such as Claude Desktop, Cursor, Windsurf, or GitHub Copilot in VS Code can search test cases, draft new ones, start test runs, record results, and upload attachments on your behalf — without you leaving the chat window.

It exposes 35 tools, runs locally on Node.js 18+ over the MCP stdio transport, and is licensed under Apache 2.0. There is nothing to host or deploy: your MCP client launches it on demand with npx.

No context switching. No tedious copy-pasting. Just ask your AI.

[!NOTE] Compatibility baseline: tested and validated against TestRail 10.6.2 (API v2). Older TestRail instances (including pre-7.x pagination) are also supported via built-in backward compatibility. TestRail Cloud and self-hosted TestRail Server both work.

Table of contents

✨ Key Features & Capabilities

Capability Description
🔍 Intelligent Discovery Browse projects, test suites, and sections to automatically map your QA organization.
📋 Full Case Management Fetch, create, update, and bulk-edit test cases with comprehensive custom field support.
▶️ Actionable Execution Create test runs, update results by test_id or case_id, attach files, and track statuses.
🧠 Context-Aware AI Dynamically exposes templates, fields, priorities, and statuses so LLMs generate valid, structured data.
🖥️ CLI & CI/CD Native Run every tool from bash, GitHub Actions, GitLab CI, or Jenkins with zero LLM overhead.
🔐 Least-Privilege Controls Per-mode permissions plus per-tool allowlisting; destructive deletes are off by default.

🚀 Quick Start Guide

1. Obtain your TestRail API key

Navigate to My Settings → API Keys in TestRail and generate a new key. Copy it immediately — TestRail shows it only once. The API must also be enabled instance-wide under Administration → Site Settings → API.

2. Configure your MCP client

Add the server to your MCP client configuration. The Claude Desktop example is shown below; Cursor, Windsurf, and VS Code use the same pattern (see the collapsible sections).

🤖 Claude Desktop

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "testrail": {
      "command": "npx",
      "args": ["-y", "@uarlouski/testrail-mcp-server@latest"],
      "env": {
        "TESTRAIL_INSTANCE_URL": "https://your-instance.testrail.io",
        "TESTRAIL_USERNAME": "[email protected]",
        "TESTRAIL_API_KEY": "your-api-key",
        "TESTRAIL_ENABLE_SHARED_STEPS": "true"
      }
    }
  }
}

3. See it in action

Restart your client completely, then turbo-charge your QA workflow by asking your AI assistant:

  • “List all projects in TestRail to find the latest active project.”
  • “Show me all active users in the project to find the right assignee.”
  • “Show me all test cases in section 5 of project 3.”
  • “Create a comprehensive test case for ‘Login Validation’ with detailed steps.”
  • “Start a new test run containing cases from section 5.”
  • “Mark test case C1042 as passed with the comment ‘verified on staging’.”

Full per-client setup instructions, including troubleshooting, are in the Getting Started guide.


🖥️ Command Line Interface (CLI) & CI/CD Automation

In addition to interacting via AI assistants, you can invoke any TestRail tool directly from shell scripts, terminal environments, and automated CI/CD pipelines (GitHub Actions, GitLab CI, Jenkins) using testrail-cli or npx — with zero LLM overhead.

  • Deterministic Execution: Returns standard Unix exit codes (0 on success, 1 on error).
  • Pipeline-Native Output: Emits clean JSON to stdout for piping into tools like jq, while diagnostics and errors go to stderr.
  • Zero Duplication: Reuses the exact same API client, retry logic, and validation schemas as the MCP server.

Invocation methods

# Method 1: Direct npx subcommand (Recommended)
npx @uarlouski/testrail-mcp-server cli  [flags]

# Method 2: Global or local binary
testrail-cli  [flags]

# Method 3: Via package runner
npx -p @uarlouski/testrail-mcp-server testrail-cli  [flags]

Examples

Query projects (query_project)

# List all active projects
npx @uarlouski/testrail-mcp-server cli query_project --action many

# Query a single project by ID
npx @uarlouski/testrail-mcp-server cli query_project --action one --project_id 1

Report automated test results (add_results_for_cases)

# Submit results by case_id — what your test framework already knows
npx @uarlouski/testrail-mcp-server cli add_results_for_cases \
  --run_id 88 \
  --results '[{"case_id":1042,"status_id":1,"comment":"Passed in CI"}]'

Export cases for knowledge base / RAG (export_cases_for_rag)

# Export all cases for a project into Markdown & metadata sidecars
npx @uarlouski/testrail-mcp-server cli export_cases_for_rag \
  --project_id 1 \
  --output_dir ./rag_exports

# Export specific cases by ID (comma-separated list)
npx @uarlouski/testrail-mcp-server cli export_cases_for_rag \
  --case_ids C101,C102,103 \
  --output_dir ./rag_exports

Command discovery & flag documentation

# List all available commands
npx @uarlouski/testrail-mcp-server cli --help

# Show parameter options for a specific tool
npx @uarlouski/testrail-mcp-server cli query_project --help

See the CLI & CI/CD guide for complete GitHub Actions, GitLab CI, and Jenkins workflows.


⚙️ Environment Variables & Security Controls

Variable Description Required Default
TESTRAIL_INSTANCE_URL Your TestRail instance URL (e.g., https://example.testrail.io) ✅
TESTRAIL_USERNAME Your TestRail user email address ✅
TESTRAIL_API_KEY Your TestRail API key (Guide) ✅
TESTRAIL_ENABLE_SHARED_STEPS Set to true to enable Shared Steps management tools false
TESTRAIL_ENABLE_CASE_HISTORY Set to true to enable Case History and revision tracking tools false
TESTRAIL_ENABLE_RAG_TOOLS Set to true to enable experimental Knowledge Base / RAG export tools (export_cases_for_rag). Subject to breaking API changes. false
TESTRAIL_ALLOW_WRITE_OPERATIONS Allow write operations (e.g. adding/updating test cases, test runs, sections) true
TESTRAIL_ALLOW_READ_OPERATIONS Allow read operations (e.g. retrieving projects, test cases, templates) true
TESTRAIL_ALLOW_DELETE_OPERATIONS Allow delete operations (e.g. deleting cases or shared steps). Enabled strictly via true. false
TESTRAIL_ENABLE_DEPRECATED_TOOLS Preserved for backward compatibility with existing host configurations. true
TESTRAIL_DISABLED_TOOLS Comma-separated list of specific tool names to disable (e.g., mutate_suite,delete_entity). Fails if invalid tool names are specified. -

With only the three required credentials, 27 of the 35 tools are registered. Ready-made read-only and least-privilege configurations are in the Configuration guide.


🧰 Available Tools

All 35 tools, grouped by area. Each declares a read, write, or delete mode, which the server surfaces to clients as MCP annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint).

Area Tools Reference
Discovery & Navigation query_project, query_suite, mutate_suite, query_section, mutate_section, get_users Docs
Test Case Management get_case, get_cases, add_case, update_case, update_cases, get_case_fields, resolve_case_field, get_case_history, export_cases_for_rag Docs
Execution & Tracking query_run, mutate_run, query_test, get_tests, get_results, add_results, add_results_for_cases Docs
Attachments & Media add_attachment, query_attachment Docs
Shared Steps get_shared_step, get_shared_steps, get_shared_step_history, add_shared_step, update_shared_step Docs
System Metadata get_statuses, get_priorities, get_case_fields, get_templates, get_labels, get_configurations Docs
Deletion delete_entity Docs

❓ Frequently Asked Questions

More answers in the full FAQ.


📚 Documentation & Complete Tool Reference

For a comprehensive guide, detailed configuration options, and a complete breakdown of all available tools, visit the official documentation site:

👉 TestRail MCP Server Documentation


🤝 Contributing

Open-source contributions are actively welcomed! Please feel free to open an issue for feature requests or submit a pull request for improvements.

📜 License

This project is licensed under the Apache License 2.0.


TestRail MCP Server · Engineered with the Model Context Protocol

View this README on GitHub

Install

npx -y @uarlouski/testrail-mcp-server@latest

Configuration

{ "mcpServers": { "testrail": { "command": "npx", "args": ["-y", "@uarlouski/testrail-mcp-server@latest"], "env": { "TESTRAIL_INSTANCE_URL": "https://your-instance.testrail.io", "TESTRAIL_USERNAME": "[email protected]", "TESTRAIL_API_KEY": "your-api-key", "TESTRAIL_ENABLE_SHARED_STEPS": "true" } } } }