TestRail MCP Server
Provides tools for managing projects, suites, test cases, sections, runs, tests, results, plans, milestones, and shared steps in TestRail via its API.
Click on "Deploy 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., "@TestRail MCP Server list all test cases in the 'Login' section of project 'Web App'"
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.
TestRail MCP Server
This Model Context Protocol (MCP) server provides tools for interacting with TestRail directly from Claude AI and other MCP-supported clients like Cursor. It allows you to manage test cases, projects, suites, runs, and more without leaving your conversation with the AI.
Available Tools
The TestRail MCP server provides the following tools:
Category | Tools |
Projects |
|
Suites |
|
Cases |
|
Sections |
|
Runs |
|
Tests |
|
Results |
|
Plans |
|
Milestones |
|
Shared Steps |
|
Related MCP server: TestRail MCP Server
Usage
You can connect this MCP server by setting like the below. This method uses npx to automatically download and run the latest version of the package, eliminating the need for local installation.
// Example configuration using npx
{
"mcpServers": {
"testrail": {
"command": "npx",
"args": ["@bun913/mcp-testrail@latest"],
"env": {
"TESTRAIL_URL": "https://your-instance.testrail.io", // Replace with your TestRail URL
"TESTRAIL_USERNAME": "your-email@example.com", // Replace with your TestRail username
"TESTRAIL_API_KEY": "YOUR_API_KEY" // Replace with your TestRail API key
}
}
}
}Troubleshooting
spawn npx ENOENT/spawn node ENOENT(commonly on macOS): your MCP host (Cursor, Claude Code, Claude Desktop, …) cannot findnpxornodeat process-spawn time. The chat UI usually surfaces this as a generic "MCP server doesn't work" with no useful detail; the per-server log is the diagnostic source of truth.Why it happens on macOS: GUI apps launched from the Dock, Spotlight, or Finder inherit launchd's minimal
PATH(/usr/bin:/bin:/usr/sbin:/sbin). If you installed Node via a version manager (nvm,asdf,mise,fnm,Volta) or Apple Silicon Homebrew (/opt/homebrew/bin/),npxlives outside that PATH — only your shell startup file (~/.zshrc/~/.bashrc) adds it. Your terminal works because the shell ran the startup file; the GUI-app process never did.Diagnose by checking the per-server log for
spawn npx ENOENT:Cursor:
~/Library/Application Support/Cursor/logs/<session>/window<N>/exthost/anysphere.cursor-mcp/MCP <server>.logClaude Code / Claude Desktop:
~/Library/Logs/Claude/
Fix by replacing
"npx"in your MCP config with its absolute path. Runwhich npxin your normal terminal:/Users/you/.nvm/versions/node/v24.15.0/bin/npx # nvm /opt/homebrew/bin/npx # Apple Silicon Homebrew /usr/local/bin/npx # Intel Homebrew / system NodeThen update your MCP config:
{ "mcpServers": { "testrail": { "command": "/Users/you/.nvm/versions/node/v24.15.0/bin/npx", "args": ["@bun913/mcp-testrail@latest"], "env": { "TESTRAIL_URL": "https://your-instance.testrail.io", "TESTRAIL_USERNAME": "your-email@example.com", "TESTRAIL_API_KEY": "YOUR_API_KEY" } } } }Restart your MCP client after the change. The same fix applies to every
npx-launched MCP server — ifmcp-testrailis failing for this reason, your othernpx-launched servers are likely failing too.Authentication issues: Check your TestRail API credentials.
Your conversation is too long: Use
limitandoffsetparameters for test cases and sections to paginate results.HTTP 400 errors when creating/updating test cases: TestRail projects have different templates, custom fields, and required fields. This MCP server passes your parameters directly to the TestRail API — it does not validate or transform them. If you encounter 400 errors, define your project's rules in
CLAUDE.mdorAGENTS.mdso the LLM sends the correct parameters. For example:# TestRail Rules for This Project - Project ID: 1 - Always use template 2 (Separated Steps) when creating test cases - Use `customStepsSeparated` (array of step objects) - Do NOT send `customSteps` or `customExpected` with template 2 - Required custom fields: custom_automation_type (default: 0) - Call `getCaseFields` at the start of a session to check available fields
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Acknowledgements
Available Tools
42 toolsaddBddA
Imports/uploads a .feature file (Gherkin BDD scenario) into a TestRail section. Creates a new test case with BDD template (template_id=4) and populates the custom_testrail_bdd_scenario field. REQUIRED: sectionId, featureContent (raw Gherkin text including Feature:, Scenario:, Given/When/Then).
Inputs: sectionId (required), featureContent (required).
addCaseA
Creates a new test case in TestRail. REQUIRED: sectionId, title. OPTIONAL: typeId, priorityId, templateId, customSteps, customExpected, customStepsSeparated, customFields, etc. Use getCaseTypes to find valid typeId values. NOTE: templateId=2 is required to use customStepsSeparated (array of step objects with 'content' and 'expected' fields). For simple text steps, use customSteps and customExpected instead. Use customFields for any additional custom fields (e.g., {custom_case_security_score: 'high'}).
Inputs: title (required), sectionId (required), refs, typeId, +9 more.
addPlanB
Creates a new test plan in a TestRail project / TestRailプロジェクトに新しいテストプランを作成します
Inputs: name (required), projectId (required), entries, description, +1 more.
addPlanEntryB
Adds a new test plan entry to an existing test plan / 既存のテストプランに新しいテストプランエントリーを追加します
Inputs: planId (required), suiteId (required), name, refs, +6 more.
addResultForCaseB
Adds a test result for a specific test case in a test run / テスト実行内の特定のテストケースにテスト結果を追加します
Inputs: runId (required), caseId (required), comment, defects, +4 more.
addResultsForCasesB
Adds test results for multiple test cases in a test run / テスト実行内の複数のテストケースにテスト結果を追加します
Inputs: runId (required), results (required).
addRunC
Creates a new test run in a TestRail project / TestRailプロジェクトに新しいテスト実行を作成します
Inputs: name (required), projectId (required), refs, caseIds, +6 more.
addRunToPlanEntryC
Adds a new test run to an existing plan entry / 既存のプランエントリーに新しいテストランを追加します
Inputs: planId (required), entryId (required), configIds (required), refs, +4 more.
addSectionB
Creates a new section in a TestRail project / TestRailプロジェクトに新しいセクションを作成します
Inputs: name (required), projectId (required), suiteId, parentId, +1 more.
addSuiteB
Creates a new test suite in the specified project / 指定されたプロジェクトに新しいテストスイートを作成します
Inputs: name (required), projectId (required), description.
copyToSectionA
Copies specified test cases to a target section while keeping the originals / 指定されたテストケースを対象のセクションにコピーし、元のケースは保持します
Inputs: caseIds (required), sectionId (required).
deleteCaseB
Deletes a test case from TestRail / TestRailからテストケースを削除します
Inputs: caseId (required).
deleteSectionB
Deletes a section / セクションを削除します
Inputs: sectionId (required), soft.
getBddB
Exports a BDD test case as a .feature file in Gherkin format. REQUIRED: caseId.
Inputs: caseId (required).
getCaseA
Retrieves complete details for a single test case including steps, expected results, and prerequisites. REQUIRED: caseId.
Inputs: caseId (required).
getCaseFieldsA
Retrieves all available test case fields in TestRail / TestRailで利用可能な全テストケースフィールドを取得します
Inputs: no named parameters.
getCaseHistoryA
Retrieves the change history of a test case including updates to fields and custom fields / テストケースの変更履歴(フィールドとカスタムフィールドの更新を含む)を取得します
Inputs: caseId (required).
getCasesA
Retrieves test cases list with basic fields only (excludes steps/expected results for performance). REQUIRED: projectId, suiteId. OPTIONAL: createdBy, filter, limit (default 50), milestoneId, offset (default 0), priorityId, refs, sectionId, templateId, typeId, updatedBy, labelId. Use getCase for full details.
Inputs: suiteId (required), projectId (required), refs, limit, +10 more.
getCaseTypesA
Retrieves all available test case types in TestRail / TestRailで利用可能な全テストケースタイプを取得します
Inputs: no named parameters.
getMilestonesB
Retrieves all milestones for a specified TestRail project / 指定されたTestRailプロジェクトの全マイルストーンを取得します
Inputs: projectId (required).
getPlansB
Retrieves all test plans for a specified TestRail project / 指定されたTestRailプロジェクトの全テストプランを取得します
Inputs: projectId (required).
getProjectB
Retrieves details of a specific TestRail project by ID / 特定のTestRailプロジェクトの詳細をIDで取得します
Inputs: projectId (required).
getProjectsA
Retrieves all TestRail projects / すべてのTestRailプロジェクトを取得します
Inputs: no named parameters.
getResultsC
Retrieves test results for a specific test / 特定のテストのテスト結果を取得します
Inputs: testId (required), limit, offset, statusId, +1 more.
getResultsForCaseC
Retrieves test results for a specific test case in a test run / テスト実行内の特定のテストケースのテスト結果を取得します
Inputs: runId (required), caseId (required), limit, offset, +2 more.
getResultsForRunB
Retrieves all test results for a test run / テスト実行の全テスト結果を取得します
Inputs: runId (required), limit, offset, statusId, +1 more.
getRunA
Retrieves details of a specific test run by ID / 特定のテスト実行の詳細をIDで取得します
Inputs: runId (required).
getRunsB
Retrieves all test runs for a specified TestRail project / 指定されたTestRailプロジェクトの全テスト実行を取得します
Inputs: projectId (required), limit, offset, suiteId, +4 more.
getSectionB
Retrieves details of a specific section by ID / 特定のセクションの詳細をIDで取得します
Inputs: sectionId (required).
getSectionsA
Retrieves sections for a specified project and suite. Supports pagination via limit and offset parameters (default: limit=250, offset=0). Use _links.next to determine if more pages are available. / 指定されたプロジェクトとスイートのセクションを取得します。limitとoffsetパラメータでページネーションをサポートします。
Inputs: projectId (required), limit, offset, suiteId.
getSuiteB
Retrieves details of a specific test suite by ID / 特定のテストスイートの詳細をIDで取得します
Inputs: suiteId (required).
getSuitesA
Retrieves all test suites for a specified TestRail project / 指定されたTestRailプロジェクトの全テストスイートを取得します
Inputs: projectId (required).
getTestA
Retrieves complete details for a single test, including all fields such as status, type, and results / 単一のテストの完全な詳細(ステータス、タイプ、結果などのすべてのフィールドを含む)を取得します
Inputs: testId (required).
getTestsB
Retrieves a list of tests for a test run / テスト実行に含まれるテスト一覧を取得します
Inputs: runId (required), limit, offset.
moveSectionC
Moves a section to a new position in the test hierarchy / テスト階層内の新しい位置にセクションを移動します
Inputs: parentId (required), sectionId (required), afterId.
moveToSectionB
Moves specified test cases to a target section / 指定されたテストケースを対象のセクションに移動します
Inputs: caseIds (required), sectionId (required).
updateCaseA
Updates an existing test case. REQUIRED: caseId. OPTIONAL: title, typeId, priorityId, templateId, customSteps, customExpected, customStepsSeparated, customFields, etc. Only specified fields will be updated. NOTE: templateId=2 is required to use customStepsSeparated (array of step objects with 'content' and 'expected' fields). For simple text steps, use customSteps and customExpected instead. Use customFields for any additional custom fields (e.g., {custom_case_security_score: 'high'}).
Inputs: caseId (required), refs, title, typeId, +9 more.
updateCasesA
Updates multiple test cases simultaneously with the same field values / 複数のテストケースを同じフィールド値で一括更新します. NOTE: templateId=2 is required to use customStepsSeparated (array of step objects with 'content' and 'expected' fields). For simple text steps, use customSteps and customExpected instead. Use customFields for any additional custom fields (e.g., {custom_case_security_score: 'high'}).
Inputs: caseIds (required), suiteId (required), projectId (required), refs, +11 more.
updateRunB
Updates an existing test run / 既存のテスト実行を更新します
Inputs: runId (required), name, refs, caseIds, +4 more.
updateSectionC
Updates an existing section / 既存のセクションを更新します
Inputs: sectionId (required), name, description.
updateSuiteB
Updates an existing test suite / 既存のテストスイートを更新します
Inputs: suiteId (required), name, description.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 42 tools
Each tool targets a distinct operation on a specific TestRail entity (e.g., case, run, plan, section). Overlapping tools like addCase vs addBdd are clearly differentiated by their purpose and input parameters. Descriptions provide sufficient detail to avoid confusion.
All tool names follow a consistent verb_noun camelCase pattern (e.g., addCase, getSuite, deleteSection). Verbs are standardized (add, get, delete, update, copy, move), making the naming predictable and easy to navigate.
With 42 tools, the server is far beyond the typical 3-15 range for a well-scoped set. While TestRail's feature set justifies many operations, the count feels excessive and could be consolidated (e.g., merging getCaseFields and getCaseTypes into a single tool).
The tool set covers core entities but has significant gaps: missing deleteRun, deletePlan, deleteSuite, deleteProject, updatePlan, updateProject, and any milestone management beyond retrieval. These omissions prevent full CRUD lifecycle coverage.
Maintenance
Related MCP Connectors
Create and manage test cases, test runs and results in Testiny from your AI assistant.
Test management for AI agents: cases, runs, results, cycles and traceability.
Manage projects, tasks, time tracking, and team collaboration through natural language.
Write, run and check natural-language browser tests of your web app from your AI assistant.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with TestRail test management systems through comprehensive API integration. Supports retrieving and updating test cases, projects, suites, runs, and results, plus adding attachments and managing test data through natural language commands.1829 npmMIT
- AlicenseBqualityDmaintenanceEnables AI assistants to interact directly with TestRail instances for managing test projects, suites, cases, runs, results, plans, milestones, and attachments through the TestRail API with secure authentication.7761 npm1MIT
- AlicenseAqualityFmaintenanceEnables management of TestRail projects, test cases, runs, and results directly through MCP-supported clients. It provides a comprehensive set of tools to interact with the TestRail API for seamless test cycle management within AI environments.426,221 npm42MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with TestRail test management system, supporting full CRUD operations on projects, suites, sections, test cases, runs, results, plans, and milestones.35327 npm1MIT