{"_id":"@bdavisoc/mcp-testrail","_rev":"4-88de2febffccbf865db750105697744c","name":"@bdavisoc/mcp-testrail","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@bdavisoc/mcp-testrail","version":"0.1.0","author":{"name":"bdavisOC"},"license":"MIT","_id":"@bdavisoc/mcp-testrail@0.1.0","maintainers":[{"name":"bdavisoc","email":"bdavis@openclinica.com"}],"homepage":"https://github.com/bdavisOC/mcp-testrail","bugs":{"url":"https://github.com/bdavisOC/mcp-testrail/issues"},"bin":{"mcp-testrail":"dist/stdio.js"},"dist":{"shasum":"6e4bca4776ea2a3a82e029f604cafe13636d54fe","tarball":"https://registry.npmjs.org/@bdavisoc/mcp-testrail/-/mcp-testrail-0.1.0.tgz","fileCount":120,"integrity":"sha512-9Tz78bEH5z9j+Et4q4LUvbdQTgd8c897BXGmcbSc4LqOSsXImbQ5gSrr0E9RpPSMbx+y7vWYwPX1ndwUTdeQOw==","signatures":[{"sig":"MEQCIGmc9KEohKDoU3RFHC/Dr0bFfgJIb5J4d92KxGPIpAZiAiASobhJtEFIhMrCWzKkz/s5KGdZup0zwAJOq0vr+Cc/SQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":406042},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18.1"},"gitHead":"5a824fb6e1915afc0a4b1abc38b7bbfd4072397a","private":false,"scripts":{"test":"vitest ./test --reporter=verbose --coverage","build":"tsc","format":"biome format --write ./src","test:ci":"vitest run ./test --silent --coverage --reporter=verbose","start:stdio":"node dist/stdio.js","playwright-cli":"playwright-cli","prepublishOnly":"npm run build"},"_npmUser":{"name":"bdavisoc","email":"bdavis@openclinica.com"},"repository":{"url":"git+https://github.com/bdavisOC/mcp-testrail.git","type":"git"},"_npmVersion":"11.9.0","description":"<a href=\"https://flatt.tech/oss/gmo/trampoline\" target=\"_blank\"><img src=\"https://flatt.tech/assets/images/badges/gmo-oss.svg\" height=\"24px\"/></a>","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.2","axios":"^1.16.0","dotenv":"^16.4.5","form-data":"^4.0.0","@biomejs/biome":"^1.9.4","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"~5.7.2","@types/node":"^22.13.14","@playwright/cli":"^0.1.1","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp-testrail_0.1.0_1783690906194_0.7030445702168442","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bdavisoc/mcp-testrail","version":"0.2.0","author":{"name":"bdavisOC"},"license":"MIT","_id":"@bdavisoc/mcp-testrail@0.2.0","maintainers":[{"name":"bdavisoc","email":"bdavis@openclinica.com"}],"homepage":"https://github.com/bdavisOC/mcp-testrail","bugs":{"url":"https://github.com/bdavisOC/mcp-testrail/issues"},"bin":{"mcp-testrail":"dist/stdio.js"},"dist":{"shasum":"aa4fa3e89d6f494b5684bd71d4265c1528f6f96a","tarball":"https://registry.npmjs.org/@bdavisoc/mcp-testrail/-/mcp-testrail-0.2.0.tgz","fileCount":120,"integrity":"sha512-DvnzcaEOtssD0P4FNPCkxKS5PwmORB6VBdCgkn6fg9ip4AX8bYjRLfbZLT5z1XCFLUHtY2iJr1svXVAPOyL10A==","signatures":[{"sig":"MEQCIFe6DdLmebH8hbeG2YFZ8mYjo9vPQYdjqf8StLbmNicWAiBLEERqFV7kqUWNHMIZsyzALX0qthtQVaoYkdH9V6mICA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":408847},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18.1"},"gitHead":"b9ca440f7ad46e2714782d963a88221589a141bd","private":false,"scripts":{"test":"vitest ./test --reporter=verbose --coverage","build":"tsc","format":"biome format --write ./src","test:ci":"vitest run ./test --silent --coverage --reporter=verbose","start:stdio":"node dist/stdio.js","playwright-cli":"playwright-cli","prepublishOnly":"npm run build"},"_npmUser":{"name":"bdavisoc","email":"bdavis@openclinica.com"},"repository":{"url":"git+https://github.com/bdavisOC/mcp-testrail.git","type":"git"},"_npmVersion":"11.9.0","description":"<a href=\"https://flatt.tech/oss/gmo/trampoline\" target=\"_blank\"><img src=\"https://flatt.tech/assets/images/badges/gmo-oss.svg\" height=\"24px\"/></a>","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.2","axios":"^1.16.0","dotenv":"^16.4.5","form-data":"^4.0.0","@biomejs/biome":"^1.9.4","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"~5.7.2","@types/node":"^22.13.14","@playwright/cli":"^0.1.1","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp-testrail_0.2.0_1783693772733_0.5567022456248023","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bdavisoc/mcp-testrail","version":"0.3.0","author":{"name":"bdavisOC"},"license":"MIT","_id":"@bdavisoc/mcp-testrail@0.3.0","maintainers":[{"name":"bdavisoc","email":"bdavis@openclinica.com"}],"homepage":"https://github.com/bdavisOC/mcp-testrail","bugs":{"url":"https://github.com/bdavisOC/mcp-testrail/issues"},"bin":{"mcp-testrail":"dist/stdio.js"},"dist":{"shasum":"78a3db760a3aac18248524eec3dd550d51ff5a09","tarball":"https://registry.npmjs.org/@bdavisoc/mcp-testrail/-/mcp-testrail-0.3.0.tgz","fileCount":120,"integrity":"sha512-3nZaThAwgcxn9RTRxzWeNmMEZMenL/lkjOAa9fxFcOe5cX8pG/soh49qDYMY7ZDzyJG8ewkcUn5E/EKqxVz4+g==","signatures":[{"sig":"MEQCICrjAm8ZDa2QdN3EZOP8HEbiLn6tZy96RCoU/wv/jy4NAiBUIodqBjGaTxEqzHyVpvDhnWQjES5D0Q5LPklWz403JA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":414587},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.18.1"},"gitHead":"f057e53a0c90bc9bc5470a4178ac3269313ae18a","private":false,"scripts":{"test":"vitest ./test --reporter=verbose --coverage","build":"tsc","format":"biome format --write ./src","test:ci":"vitest run ./test --silent --coverage --reporter=verbose","start:stdio":"node dist/stdio.js","playwright-cli":"playwright-cli","prepublishOnly":"npm run build"},"_npmUser":{"name":"bdavisoc","email":"bdavis@openclinica.com"},"repository":{"url":"git+https://github.com/bdavisOC/mcp-testrail.git","type":"git"},"_npmVersion":"11.9.0","description":"<a href=\"https://flatt.tech/oss/gmo/trampoline\" target=\"_blank\"><img src=\"https://flatt.tech/assets/images/badges/gmo-oss.svg\" height=\"24px\"/></a>","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.24.2","axios":"^1.16.0","dotenv":"^16.4.5","form-data":"^4.0.0","@biomejs/biome":"^1.9.4","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"~5.7.2","@types/node":"^22.13.14","@playwright/cli":"^0.1.1","@vitest/coverage-v8":"^4.1.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp-testrail_0.3.0_1783703760422_0.5215240335200646","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@bdavisoc/mcp-testrail","author":{"name":"bdavisOC"},"homepage":"https://github.com/bdavisOC/mcp-testrail","private":false,"publishConfig":{"access":"public"},"version":"0.4.0","type":"module","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"start:stdio":"node dist/stdio.js","format":"biome format --write ./src","test":"vitest ./test --reporter=verbose --coverage","test:ci":"vitest run ./test --silent --coverage --reporter=verbose","build":"tsc","prepublishOnly":"npm run build","playwright-cli":"playwright-cli"},"devDependencies":{"@types/node":"^22.13.14","@vitest/coverage-v8":"^4.1.8","typescript":"~5.7.2","@playwright/cli":"^0.1.1","vitest":"^4.1.8"},"dependencies":{"@biomejs/biome":"^1.9.4","@modelcontextprotocol/sdk":"^1.27.1","axios":"^1.16.0","dotenv":"^16.4.5","form-data":"^4.0.0","zod":"^3.24.2"},"engines":{"node":">=20.18.1"},"bin":{"mcp-testrail":"dist/stdio.js"},"repository":{"type":"git","url":"git+https://github.com/bdavisOC/mcp-testrail.git"},"license":"MIT","gitHead":"004a5599c2629cfdf012ec95875bcb136ad62c6b","_id":"@bdavisoc/mcp-testrail@0.4.0","description":"<a href=\"https://flatt.tech/oss/gmo/trampoline\" target=\"_blank\"><img src=\"https://flatt.tech/assets/images/badges/gmo-oss.svg\" height=\"24px\"/></a>","bugs":{"url":"https://github.com/bdavisOC/mcp-testrail/issues"},"_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-E1HIiCUtzmHVE5qB8v1PmZA5w63Q2cpD9Mc9GysqwKu3LjBnBNjUCHcB1xGakjmLaPMme73+L/v/lyL6mNYKvA==","shasum":"cd62b4583f2e5c12b1a5f0de26d9aa1f3cc4ae52","tarball":"https://registry.npmjs.org/@bdavisoc/mcp-testrail/-/mcp-testrail-0.4.0.tgz","fileCount":120,"unpackedSize":418509,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHcavAruGunuBW6ZQAoYTYzkHyXm0Tgl/DUtvIL4Z0yxAiBj1OOMia3IBnYx4QVMwrEg9bdwgx8hmHGwUn2osE+aGA=="}]},"_npmUser":{"name":"bdavisoc","email":"bdavis@openclinica.com"},"directories":{},"maintainers":[{"name":"bdavisoc","email":"bdavis@openclinica.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-testrail_0.4.0_1784063762185_0.2474660907686903"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-10T13:41:46.061Z","modified":"2026-07-14T21:16:02.535Z","0.1.0":"2026-07-10T13:41:46.320Z","0.2.0":"2026-07-10T14:29:32.897Z","0.3.0":"2026-07-10T17:16:00.556Z","0.4.0":"2026-07-14T21:16:02.379Z"},"bugs":{"url":"https://github.com/bdavisOC/mcp-testrail/issues"},"author":{"name":"bdavisOC"},"license":"MIT","homepage":"https://github.com/bdavisOC/mcp-testrail","repository":{"type":"git","url":"git+https://github.com/bdavisOC/mcp-testrail.git"},"description":"<a href=\"https://flatt.tech/oss/gmo/trampoline\" target=\"_blank\"><img src=\"https://flatt.tech/assets/images/badges/gmo-oss.svg\" height=\"24px\"/></a>","maintainers":[{"name":"bdavisoc","email":"bdavis@openclinica.com"}],"readme":"# TestRail MCP Server\n\n<a href=\"https://flatt.tech/oss/gmo/trampoline\" target=\"_blank\"><img src=\"https://flatt.tech/assets/images/badges/gmo-oss.svg\" height=\"24px\"/></a>\n\nThis 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.\n\n## Available Tools\n\nThe TestRail MCP server provides the following tools:\n\n| Category | Tools |\n|----------|-------|\n| **Projects** | `getProjects`, `getProject` |\n| **Suites** | `getSuites`, `getSuite`, `addSuite`, `updateSuite` |\n| **Cases** | `getCase`, `getCases`, `addCase`, `updateCase`, `deleteCase`, `getCaseTypes`, `getCaseFields`, `copyToSection`, `moveToSection`, `getCaseHistory`, `updateCases`, `addBdd`, `getBdd` |\n| **Sections** | `getSection`, `getSections`, `addSection`, `moveSection`, `updateSection`, `deleteSection` |\n| **Runs** | `getRuns`, `getRun`, `addRun`, `updateRun` |\n| **Tests** | `getTests`, `getTest` |\n| **Results** | `getResults`, `getResultsForCase`, `getResultsForRun`, `addResultForCase`, `addResultsForCases`, `addAttachmentToResult`, `deleteAttachment` |\n| **Plans** | `getPlans`, `getPlan` |\n| **Milestones** | `getMilestones` |\n| **Shared Steps** | `getSharedSteps` |\n\n## Usage\n\nYou 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.\n\n```json\n// Example configuration using npx\n{\n  \"mcpServers\": {\n    \"testrail\": {\n      \"command\": \"npx\",\n      \"args\": [\"@bun913/mcp-testrail@latest\"],\n      \"env\": {\n        \"TESTRAIL_URL\": \"https://your-instance.testrail.io\", // Replace with your TestRail URL\n        \"TESTRAIL_USERNAME\": \"your-email@example.com\", // Replace with your TestRail username\n        \"TESTRAIL_API_KEY\": \"YOUR_API_KEY\" // Replace with your TestRail API key\n      }\n    }\n  }\n}\n```\n\n## Troubleshooting\n\n- **`spawn npx ENOENT` / `spawn node ENOENT` (commonly on macOS)**: your MCP host (Cursor, Claude Code, Claude Desktop, …) cannot find `npx` or `node` at 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.\n\n  **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/`), `npx` lives 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.\n\n  **Diagnose** by checking the per-server log for `spawn npx ENOENT`:\n\n  - **Cursor:** `~/Library/Application Support/Cursor/logs/<session>/window<N>/exthost/anysphere.cursor-mcp/MCP <server>.log`\n  - **Claude Code / Claude Desktop:** `~/Library/Logs/Claude/`\n\n  **Fix** by replacing `\"npx\"` in your MCP config with its absolute path. Run `which npx` in your normal terminal:\n\n  ```text\n  /Users/you/.nvm/versions/node/v24.15.0/bin/npx   # nvm\n  /opt/homebrew/bin/npx                            # Apple Silicon Homebrew\n  /usr/local/bin/npx                               # Intel Homebrew / system Node\n  ```\n\n  Then update your MCP config:\n\n  ```json\n  {\n    \"mcpServers\": {\n      \"testrail\": {\n        \"command\": \"/Users/you/.nvm/versions/node/v24.15.0/bin/npx\",\n        \"args\": [\"@bun913/mcp-testrail@latest\"],\n        \"env\": {\n          \"TESTRAIL_URL\": \"https://your-instance.testrail.io\",\n          \"TESTRAIL_USERNAME\": \"your-email@example.com\",\n          \"TESTRAIL_API_KEY\": \"YOUR_API_KEY\"\n        }\n      }\n    }\n  }\n  ```\n\n  Restart your MCP client after the change. The same fix applies to every `npx`-launched MCP server — if `mcp-testrail` is failing for this reason, your other `npx`-launched servers are likely failing too.\n\n- **Authentication issues**: Check your TestRail API credentials.\n- **Your conversation is too long**: Use `limit` and `offset` parameters for test cases and sections to paginate results.\n- **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.md` or `AGENTS.md` so the LLM sends the correct parameters. For example:\n\n  ```markdown\n  # TestRail Rules for This Project\n  - Project ID: 1\n  - Always use template 2 (Separated Steps) when creating test cases\n    - Use `customStepsSeparated` (array of step objects)\n    - Do NOT send `customSteps` or `customExpected` with template 2\n  - Required custom fields: custom_automation_type (default: 0)\n  - Call `getCaseFields` at the start of a session to check available fields\n  ```\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Acknowledgements\n\n- [TestRail API](https://docs.testrail.techmatrix.jp/testrail/docs/702/api/)\n- [Model Context Protocol SDK](https://github.com/modelcontextprotocol/typescript-sdk)\n","readmeFilename":"README.md"}