An MCP server that connects AI agents (Claude, Cursor, etc.) to TestOps — enabling test case management, launches, defects, and analytics through natural language.
- Projects — list and inspect projects
- Test Cases — create, read, update, delete, search, and manage scenarios (steps)
- Test Plans — create, edit, view associated test cases
- Launches — browse launches and their test results
- Test Results — view and update statuses
- Defects — create, edit, browse
- Analytics — automation trend, status distribution, success rate
- Read-only mode — disable all write operations for safe environments
- Node.js 18+
- Access to a TestOps instance
- TestOps API token
npm install -g testops-mcp
Add to your MCP client config (Claude Desktop, Cursor, Claude Code, etc.):
{
"mcpServers": {
"testops": {
"command": "testops-mcp",
"env": {
"TESTOPS_URL": "https://your-testops-instance.example.com",
"TESTOPS_TOKEN": "your-api-token"
}
}
}
}
Or with npx (no global install required):
{
"mcpServers": {
"testops": {
"command": "npx",
"args": ["-y", "testops-mcp"],
"env": {
"TESTOPS_URL": "https://your-testops-instance.example.com",
"TESTOPS_TOKEN": "your-api-token"
}
}
}
}
| Variable |
Required |
Description |
TESTOPS_URL |
Yes |
TestOps instance URL (e.g. https://testops.example.com) |
TESTOPS_TOKEN |
Yes |
API token for authentication |
TESTOPS_PROJECT_ID |
No |
Default project ID (so you don't have to specify it in every request) |
TESTOPS_PAGE_SIZE |
No |
Pagination page size (server default if not set) |
TESTOPS_READ_ONLY |
No |
Set to true to disable all write operations |
| Tool |
Description |
list-projects |
List all projects |
get-project |
Get project details by ID |
| Tool |
Description |
list-test-cases |
List test cases in a project |
search-test-cases |
Search test cases by query |
get-test-case |
Get test case details |
create-test-case |
Create a test case |
update-test-case |
Update a test case |
delete-test-case |
Delete a test case |
get-test-case-scenario |
Get test case scenario (steps) |
update-test-case-scenario |
Update test case scenario |
| Tool |
Description |
list-test-plans |
List test plans |
get-test-plan |
Get test plan details |
create-test-plan |
Create a test plan |
update-test-plan |
Update a test plan |
get-test-plan-test-cases |
Get test cases in a test plan |
| Tool |
Description |
list-launches |
List launches |
get-launch |
Get launch details |
get-launch-test-results |
Get test results for a launch |
| Tool |
Description |
list-test-results |
List test results |
get-test-result |
Get test result details |
update-test-result |
Update a test result |
| Tool |
Description |
list-defects |
List defects |
get-defect |
Get defect details |
create-defect |
Create a defect |
update-defect |
Update a defect |
| Tool |
Description |
get-automation-trend |
Test automation trend over time |
get-status-distribution |
Test status distribution |
get-success-rate |
Test success rate |
src/
├── index.ts # Entry point: MCP server initialization
├── config.ts # Environment variable configuration
├── client/
│ ├── auth.ts # OAuth authentication with JWT token caching
│ └── http-client.ts # HTTP client with automatic token injection
├── api/ # Typed API clients
│ ├── projects.ts
│ ├── test-cases.ts
│ ├── test-plans.ts
│ ├── launches.ts
│ ├── test-results.ts
│ ├── defects.ts
│ └── analytics.ts
├── tools/ # MCP tool registration
│ ├── register-all.ts
│ ├── projects.ts
│ ├── test-cases.ts
│ ├── test-plans.ts
│ ├── launches.ts
│ ├── test-results.ts
│ ├── defects.ts
│ └── analytics.ts
├── types/ # TypeScript interfaces
│ ├── common.ts
│ └── api-types.ts
└── utils/
└── formatting.ts # API response formatting for LLM readability
Three-layer design:
- Client — HTTP transport with OAuth authentication and automatic token refresh
- API — typed methods for each TestOps entity
- Tools — MCP tools with Zod parameter validation and response formatting
git clone <repo-url>
cd testops-mcp
npm install
npm run build
npm start
MIT