TestOps MCP Server
Allows linking and managing Jira issues associated with test cases in TestOps.
Click on "Install 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., "@TestOps MCP Serverlist test cases in project 123"
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.
TestOps MCP Server
An MCP server that connects AI agents (Claude, Cursor, etc.) to TestOps — enabling test case management, launches, defects, and analytics through natural language.
Features
Projects — list and inspect projects
Test Cases — create, read, update, delete, search by AQL, inspect run history, and manage scenarios (steps, attachments, shared steps)
Test Plans — create, edit, view associated test cases
Launches — browse launches, their progress, and their test results
Test Results — view run history, 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
Related MCP server: Lucius
Quick Start
Prerequisites
Node.js 20+
Access to a TestOps instance
TestOps API token
Installation
npm install -g testops-mcpMCP Client Configuration
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"
}
}
}
}Environment Variables
Variable | Required | Description |
| Yes | TestOps instance URL (e.g. |
| Yes | API token for authentication |
| No | Default project ID (so you don't have to specify it in every request) |
| No | Pagination page size (server default if not set) |
| No | Set to |
| No | Request timeout in milliseconds for auth and API calls (default: |
| No | Retry count for transient read-request failures (default: |
| No | Base backoff delay in milliseconds for transient read-request retries (default: |
| No | Runtime stderr log level: |
| No | Runtime stderr log format: |
Available Tools
Projects
Tool | Description |
| List all projects |
| Get project details by ID |
Test Cases
Tool | Description |
| List test cases in a project |
| Search test cases by AQL query |
| Get test case basic details |
| Get full test case details (members, issues, custom fields, requirements, test keys) |
| Get past runs of a test case across launches (status, launch, failure message) |
| Create a test case (with tags, links, members) |
| Update a test case (with tags, links, members, duration) |
| Delete a test case |
| Get test case steps (Gherkin scenarios + manual UI steps, with attachments and expanded shared steps) |
| Update test case scenario |
Test Case Sub-Resources
Tool | Description |
| Get issue links (Jira, YouTrack, etc.) |
| Set issue links for a test case |
| Get members (owner, reviewers) |
| Set members for a test case |
| Get custom field values (Component, Priority, Team, etc.) |
| Update custom field values |
| Get relations (related to, clones, duplicates, etc.) |
| Set relations for a test case |
| Get linked requirements |
| Set requirements for a test case |
| Get test keys |
| Set test keys for a test case |
Test Plans
Tool | Description |
| List test plans |
| Get test plan details |
| Create a test plan |
| Update a test plan |
| Get test cases in a test plan |
Launches
Tool | Description |
| List launches |
| Get launch details |
| Get whether a launch has finished, plus its status counts |
| Get test results for a launch |
Test Results
Tool | Description |
| List test results |
| Get test result details |
| Get previous runs of the same test (stable failure vs flaky) |
| Update a test result |
Defects
Tool | Description |
| List defects |
| Get defect details |
| Create a defect |
| Update a defect |
Analytics
Tool | Description |
| Test automation trend over time |
| Test status distribution |
| Test success rate |
Reference Data
Tool | Description |
| List available test layers (UI, API, Unit, etc.) with IDs |
| List workflows with their statuses and IDs |
| List custom fields configured for a project, with IDs |
| List the values a custom field can take in a project (requires |
Architecture
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
│ └── reference-data.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
│ └── reference-data.ts
├── types/ # TypeScript interfaces
│ ├── common.ts
│ └── api-types.ts
└── utils/
├── formatting.ts # API response formatting for LLM readability
└── error-handler.ts # Tool error handling wrapperThree-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
Development
git clone <repo-url>
cd testops-mcp
npm install # also installs pre-commit hook via "prepare" script
npm run build
npm startTesting
The project has 220 unit tests covering all layers (utils, config, client, API, tools).
npm test # run all tests once
npm run test:watch # run in watch mode
npm run check # lint + unit tests + build + docs/guardrail checks
npm run contract:drift # ensure fake backend route contracts match src/api/*
npm run eval:smoke # run end-to-end smoke eval against a fake local TestOps backend
npm run eval:matrix # run full local eval matrix across all tool groups and logging modesA pre-commit hook automatically runs the test suite before every commit. If any test fails, the commit is blocked.
CI
GitHub Actions runs on every push to main and on every pull request.
checkruns on Node 20 and Node 22eval:smokeruns on Node 20eval:matrixruns on Node 20
The workflow file lives at .github/workflows/ci.yml.
Diagnostics
Runtime diagnostics are emitted to stderr only so they do not interfere with MCP stdout transport.
Examples:
TESTOPS_LOG_LEVEL=info TESTOPS_LOG_FORMAT=json testops-mcp
TESTOPS_LOG_LEVEL=debug TESTOPS_LOG_FORMAT=pretty testops-mcpIf the MCP client does not surface subprocess stderr clearly, reproduce the same server config in a terminal and inspect the logs there. Detailed guidance lives in docs/logging.md.
Repo Knowledge Base
Agent-facing repository guidance lives in:
AGENTS.mddocs/index.mddocs/architecture.mddocs/reliability.mddocs/security.mddocs/logging.mddocs/runbooks.mddocs/evals.md
License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kirchik95/testops-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server