Skip to main content
Glama
TestOps MCP Server

TestOps MCP Server

by syn7xx

TestOps MCP Server

npm

MCP server for TestOps 5.25. Lets AI assistants (Cursor, VS Code, Claude, OpenCode, Windsurf, Zed, Kilo Code) work directly with projects, launches, test plans, and test cases in TestOps.


What you can do

Once connected, an AI assistant can:

  • Find projects, launches, and test plans

  • Create and stop test launches

  • Read, create, and edit test cases

  • Work with scenarios and custom fields

  • Search test cases using AQL


Related MCP server: TestOps MCP Server

Quick start

Install

npm install @syn7xx/testops-mcp-server

Or run without installing — via npx:

npx @syn7xx/testops-mcp-server --url https://your-testops.com --token your-token

Short flags: -u (url), -t (token), -h (help).

You can also use environment variables:

export TESTOPS_URL=https://your-testops.com
export TESTOPS_TOKEN=your-token
npx @syn7xx/testops-mcp-server

CLI flags take priority over environment variables.


Connecting to an AI tool

Cursor, Windsurf, Kilo Code, Zed

mcp.json in your project or home folder:

{
  "mcpServers": {
    "testops": {
      "command": "npx",
      "args": ["-y", "@syn7xx/testops-mcp-server", "--url", "https://your-testops.com", "--token", "your-token"]
    }
  }
}

Visual Studio Code

.vscode/mcp.json in your project (key is servers, not mcpServers):

{
  "servers": {
    "testops": {
      "command": "npx",
      "args": ["-y", "@syn7xx/testops-mcp-server", "--url", "https://your-testops.com", "--token", "your-token"]
    }
  }
}

OpenCode

opencode.jsonc:

{
  "mcp": {
    "testops": {
      "type": "local",
      "command": ["npx", "-y", "@syn7xx/testops-mcp-server", "--url", "https://your-testops.com", "--token", "your-token"],
      "enabled": true
    }
  }
}

Or with environment variables:

{
  "mcp": {
    "testops": {
      "type": "local",
      "command": ["npx", "-y", "@syn7xx/testops-mcp-server"],
      "environment": {
        "TESTOPS_URL": "https://your-testops.com",
        "TESTOPS_TOKEN": "your-token"
      },
      "enabled": true
    }
  }
}

Claude Desktop

claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):

{
  "mcpServers": {
    "testops": {
      "command": "npx",
      "args": ["@syn7xx/testops-mcp-server", "--url", "https://your-testops.com", "--token", "your-token"]
    }
  }
}

Never commit real tokens. Use environment variables or local-only configs.


Available tools

Projects

Tool

Description

project_list

List projects with pagination

project_find_by_name

Find project by exact or partial name match

project_get_by_id

Get project by ID

project_get_test_case_trees

Get test case trees for a project

Launches

Tool

Description

launch_list

List launches for a project with pagination

launch_get

Get a launch by ID

launch_create

Create a test launch (with envVarValueSets support)

launch_stop

Stop a running launch

launch_get_statistic

Launch summary: counts by status + progress

launch_list_test_results

Flat paginated test results for a launch

Test Plans

Tool

Description

testplan_list

List test plans for a project with pagination

testplan_get

Get test plan by ID

testplan_get_stat

Test plan statistics: automated/manual counts and durations

testplan_get_test_cases

Get test cases from a test plan

testplan_run

Create a launch from a test plan

testplan_sync

Sync test plan with its source

Test Cases

Tool

Description

testcase_get

Get test case by ID

testcase_get_detail

Summary: flattened step strings, custom fields, tags

testcase_get_scenario

Full scenario JSON (steps + expected results)

testcase_get_step

Same as testcase_get_scenario (alias)

testcase_get_custom_fields

Get custom field values for a test case

testcase_update

Update test case metadata (name, description, status, tags, etc.)

testcase_update_step

Update a single scenario step

testcase_set_scenario

Replace all steps in a scenario

testcase_update_custom_fields

Set custom field values

testcase_search_by_aql

Search test cases using AQL query

testcase_list_in_tree

List test cases in a project tree

testcase_create

Create a test case (with steps, tags, custom fields)

Project Custom Fields

Tool

Description

project_get_custom_fields

Custom field definitions for a project

project_get_custom_field_values

Available values for a custom field


Self-signed certificates

If TestOps uses a self-signed certificate and Node.js fails TLS validation:

export NODE_TLS_REJECT_UNAUTHORIZED=0

This disables certificate checks for all HTTPS requests in that process. Use only when necessary and in a trusted environment.


Build and run from source

# Clone
git clone https://github.com/syn7xx/testops-mcp-server.git
cd testops-mcp-server

# Install dependencies
npm install

# Build
npm run build

# Run
npm start -- --url https://your-testops.com --token your-token

For working on the codebase, see CONTRIBUTING.md.


License

MIT

Available Tools

31 tools
launch_createCreate LaunchB

Create a test run (launch). Body requires name and projectId.

Inputs: name (required), projectId (required), tags, extra, +4 more.

launch_getGet LaunchC

Get a launch by ID

Inputs: launchId (required).

launch_get_statisticGet Launch StatisticC

Launch run summary: counts by test status and progress (ready).

Inputs: launchId (required).

launch_listList LaunchesB

List launches for a project with pagination

Inputs: projectId (required), page, size, sort.

launch_list_test_resultsList Launch Test ResultsA
Read-only

Flat paginated test results for a launch (rows: id, name, testCaseId, status, duration, etc.).

Inputs: launchId (required), page, size, sort, +2 more.

launch_stopStop LaunchB

Close/stop a running launch (ends the run on TestOps).

Inputs: launchId (required).

pingPingA

Test tool to verify server connectivity

Inputs: no named parameters.

project_find_by_nameFind Project by NameA

Find a project by exact or partial name match

Inputs: name (required).

project_get_by_idGet Project by IDB

Get a project by its ID

Inputs: id (required).

project_get_custom_fieldsGet Project Custom FieldsA

Get custom field definitions for a project with pagination. Returns { items, total, page, size } for chunked fetching.

Inputs: projectId (required), page, size.

project_get_custom_field_valuesGet Project Custom Field ValuesA

Get available values for a custom field with pagination. Returns { items, total, page, size } so the model can fetch in chunks.

Inputs: projectId (required), customFieldId (required), page, size.

project_get_test_case_treesGet Project Test Case TreesA

Get test case trees for a project. Use the returned tree IDs with testcase_list_in_tree.

Inputs: projectId (required).

project_listList ProjectsA

List all projects with pagination

Inputs: page, size, sort.

testcase_createCreate Test CaseB

Create a new test case in TestOps. Required: name and projectId. Optional: steps, customFields, tags, precondition, etc.

Inputs: name (required), projectId (required), tags, links, +13 more.

testcase_getGet Test CaseC

Get a test case by ID

Inputs: id (required).

testcase_get_custom_fieldsGet Test Case Custom FieldsC

Get custom field values for a test case

Inputs: id (required), projectId (required).

testcase_get_detailGet Test Case DetailA
Read-only

Aggregated card: name, description, tags, custom fields, and step texts as a simple list.

Inputs: id (required), projectId.

testcase_get_scenarioGet Test Case ScenarioB
Read-only

Normalized scenario JSON (scenarioSteps, step bodies, expected results).

Inputs: id (required).

testcase_get_stepGet Test Case StepsC
Read-only

Alias for testcase_get_scenario.

Inputs: id (required).

testcase_list_in_treeList Test Cases in TreeB

List test cases under a project tree with pagination. Use parentNodeId to page into a folder.

Inputs: treeId (required), projectId (required), page, size, +6 more.

testcase_search_by_aqlSearch Test Cases by AQLC

Search test cases using AQL query with pagination

Inputs: rql (required), projectId (required), page, size, +2 more.

testcase_set_scenarioSet Test Case ScenarioC

Replace all steps in a test case scenario

Inputs: id (required), steps (required).

testcase_updateUpdate Test CaseA

Update test case metadata (name, description, status, tags, etc.). Does NOT change steps or custom fields — use testcase_set_scenario / testcase_update_custom_fields for those.

Inputs: id (required), name, tags, links, +10 more.

testcase_update_custom_fieldsUpdate Test Case Custom FieldsB

Update custom field values for a test case

Inputs: id (required), fields (required).

testcase_update_stepUpdate Scenario StepB

Update one scenario step by its step id.

Inputs: stepId (required), body, expectedResult.

testplan_getGet Test PlanB

Get a test plan by ID

Inputs: id (required).

testplan_get_statGet Test Plan StatisticA

Test plan statistics: automated/manual counts, durations. Useful before running to estimate effort.

Inputs: id (required).

testplan_get_test_casesGet Test Plan Test CasesA

Get test cases from a test plan with pagination

Inputs: id (required), page, size, sort.

testplan_listList Test PlansA

List test plans for a project with pagination

Inputs: projectId (required), page, size, sort.

testplan_runRun Test PlanC

Create a launch from a test plan. Body requires launchName.

Inputs: id (required), launchName (required), tags, extra, +1 more.

testplan_syncSync Test PlanB

Sync test plan with its source: refreshes the test case list in the plan to match the current source.

Inputs: id (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 31 tools

    Disambiguation5/5

    Each tool targets a distinct entity and action, with no overlapping purposes. Aliases like testcase_get_step for testcase_get_scenario are clearly documented as such.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern with underscores, e.g., project_list, testcase_create. Even multi-word actions like testcase_update_custom_fields maintain the pattern.

    Tool Count4/5

    31 tools is on the higher side but well-scoped for a full-featured test management server. Each tool has a clear purpose and covers core workflows without being excessive.

    Completeness2/5

    The tool set lacks any delete operations for projects, test plans, launches, or test cases. This is a significant gap for CRUD completeness and will likely cause agent failures when deletion is needed.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      F
      maintenance
      Enables 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.
      42
      6,221 npm
      42
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that exposes Kiwi TCMS as a set of AI-callable tools, enabling assistants to create and manage test plans, test cases, test runs, and executions directly from a conversation.
      1
      -
    • A
      license
      A
      quality
      D
      maintenance
      MCP server that integrates with Testmo to let AI assistants read projects, runs, results, and test cases, and create or update runs, results, and cases via natural language.
      15
      135 npm
      MIT