Testomatio MCP Server

by testomatio

283 downloads
Not rated
GitHub

About

Testomatio MCP Server is a Model Context Protocol (MCP) server that integrates Testomatio's API with AI assistants like Cursor. It allows users to query and manage test projects, test runs, test plans, and automated tests through natural language conversations.

Details

Author
testomatio
Downloads
283
Categories
Other

- MCP-compatible tool interface for AI assistants
- Supports all major Testomatio API endpoints
- Runs on Node.js 18 or higher
- Configure via CLI arguments or environment variables
- Semantic XML formatting for structured responses
- Optional custom base URL for self-hosted instances

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Testomatio MCP Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install globally via npm install -g @testomatio/mcp or run directly with npx @testomatio/mcp --token <your-token> --project <project-id>. Configuration can also be provided through environment variables (TESTOMATIO_API_TOKEN, TESTOMATIO_BASE_URL). For use with Cursor, add a JSON entry to your Cursor MCP settings specifying the command and arguments.

system_ping

Check server status and active configuration

tests_list

List tests (/api/v2/{project_id}/tests). TQL (Testomat.io Query Language) is a string expression passed in `tql` to filter tests. Supported syntax includes logical operators `and`, `or`, `not`, equality operators `==` and `!=`, list membership `in [...]`, `%` for partial text match on supported text fields, and parentheses for grouping. Ordered comparisons `>`, `<`, `>=`, `<=` are for ordered fields such as `priority`, dates, and numeric counters/durations. Use quotes for string values, for example `state == 'automated'`. Documented test variables: `tag`, `label`, `priority`, `issue`, `jira`, `state`, `status`, `custom_status`, `created_at`, `updated_at`, `last_run_at`, `executed_at`, `created_by`, `assigned_to`, `suite`, `test`, `shared`, `milestone`. Documented examples: `priority == 'high'`, `priority >= 'normal'`, `state == 'automated'`, `tag in ['smoke', 'stage1'] and status == 'failed'`, `suite % 'Checkout'`, `test % 'User login'`, `custom_status % 'issue'`, `created_at < 1.month_ago`, `jira in ['JST-1', 'JST-2']`, `milestone == 'Sprint 1'`. Do not invent undocumented fields or syntax. If a query fails, simplify it to one documented predicate.

tests_get

Get test by ID

tests_create

Create test (/api/v2/{project_id}/tests)

tests_update

Update test (/api/v2/{project_id}/tests/{id})

tests_delete

Delete test

tests_search

Search tests using TQL (delegates to tests_list). TQL (Testomat.io Query Language) is a string expression passed in `tql` to filter tests. Supported syntax includes logical operators `and`, `or`, `not`, equality operators `==` and `!=`, list membership `in [...]`, `%` for partial text match on supported text fields, and parentheses for grouping. Ordered comparisons `>`, `<`, `>=`, `<=` are for ordered fields such as `priority`, dates, and numeric counters/durations. Use quotes for string values, for example `state == 'automated'`. Documented test variables: `tag`, `label`, `priority`, `issue`, `jira`, `state`, `status`, `custom_status`, `created_at`, `updated_at`, `last_run_at`, `executed_at`, `created_by`, `assigned_to`, `suite`, `test`, `shared`, `milestone`. Documented examples: `priority == 'high'`, `priority >= 'normal'`, `state == 'automated'`, `tag in ['smoke', 'stage1'] and status == 'failed'`, `suite % 'Checkout'`, `test % 'User login'`, `custom_status % 'issue'`, `created_at < 1.month_ago`, `jira in ['JST-1', 'JST-2']`, `milestone == 'Sprint 1'`. Do not invent undocumented fields or syntax. If a query fails, simplify it to one documented predicate.

tests_issues_list

List linked issues for a test (/api/v2/{project_id}/issues?test_id=...)

tests_issues_link

Link issue to a test (/api/v2/{project_id}/issues)

tests_issues_unlink

Unlink issue from a test (/api/v2/{project_id}/issues/{id})

suites_list

List suites as tree (/api/v2/{project_id}/suites)

suites_get

Get suite by ID

suites_create

Create suite (/api/v2/{project_id}/suites)

suites_update

Update suite (/api/v2/{project_id}/suites/{id})

suites_delete

Delete suite

suites_search

Search suites by title (delegates to suites list with search_text)

suites_issues_list

List linked issues for a suite (/api/v2/{project_id}/issues?suite_id=...)

suites_issues_link

Link issue to a suite (/api/v2/{project_id}/issues)

suites_issues_unlink

Unlink issue from a suite (/api/v2/{project_id}/issues/{id})

runs_list

List runs (/api/v2/{project_id}/runs). TQL (Testomat.io Query Language) is a string expression passed in `tql` to filter runs. Supported syntax includes logical operators `and`, `or`, `not`, equality operators `==` and `!=`, list membership `in [...]`, `%` for partial text match on supported text fields, and parentheses for grouping. Ordered comparisons `>`, `<`, `>=`, `<=` are for ordered fields such as `priority`, dates, and numeric counters/durations. Use quotes for string values, for example `state == 'automated'`. Runs also support boolean flags without comparison such as `failed`, `finished`, `automated`, or `with_defect`. Documented run variables: `title`, `plan`, `rungroup`, `env`, `tag`, `label`, `jira`, `duration`, `passed_count`, `failed_count`, `skipped_count`, `automated`, `manual`, `mixed`, `finished`, `unfinished`, `passed`, `failed`, `terminated`, `published`, `private`, `archived`, `unarchived`, `with_defect`, `has_defect`, `has_test`, `has_test_tag`, `has_test_label`, `has_suite`, `has_message`, `has_custom_status`, `has_assigned_to`, `has_retries`, `has_test_duration`, `has_priority`, `created_at`, `updated_at`, `launched_at`, `finished_at`, `milestone`. Documented examples: `title % 'Manual tests'`, `plan == '{PLAN_ID}'`, `env in ['Windows', 'Linux']`, `failed and has_test_tag == 'regression'`, `finished and with_defect`, `has_retries > 2`, `automated and env == 'Production' and has_message % 'Server Error'`, `finished_at >= '2025-07-01' and finished_at <= '2025-07-31' and failed`. Do not invent undocumented fields or syntax. If a query fails, simplify it to one documented predicate.

runs_get

Get run by ID

runs_create

Create run (/api/v2/{project_id}/runs)

runs_update

Update run (/api/v2/{project_id}/runs/{id})

runs_delete

Delete run (/api/v2/{project_id}/runs/{id})

runs_search

Search runs using TQL (delegates to runs_list). TQL (Testomat.io Query Language) is a string expression passed in `tql` to filter runs. Supported syntax includes logical operators `and`, `or`, `not`, equality operators `==` and `!=`, list membership `in [...]`, `%` for partial text match on supported text fields, and parentheses for grouping. Ordered comparisons `>`, `<`, `>=`, `<=` are for ordered fields such as `priority`, dates, and numeric counters/durations. Use quotes for string values, for example `state == 'automated'`. Runs also support boolean flags without comparison such as `failed`, `finished`, `automated`, or `with_defect`. Documented run variables: `title`, `plan`, `rungroup`, `env`, `tag`, `label`, `jira`, `duration`, `passed_count`, `failed_count`, `skipped_count`, `automated`, `manual`, `mixed`, `finished`, `unfinished`, `passed`, `failed`, `terminated`, `published`, `private`, `archived`, `unarchived`, `with_defect`, `has_defect`, `has_test`, `has_test_tag`, `has_test_label`, `has_suite`, `has_message`, `has_custom_status`, `has_assigned_to`, `has_retries`, `has_test_duration`, `has_priority`, `created_at`, `updated_at`, `launched_at`, `finished_at`, `milestone`. Documented examples: `title % 'Manual tests'`, `plan == '{PLAN_ID}'`, `env in ['Windows', 'Linux']`, `failed and has_test_tag == 'regression'`, `finished and with_defect`, `has_retries > 2`, `automated and env == 'Production' and has_message % 'Server Error'`, `finished_at >= '2025-07-01' and finished_at <= '2025-07-31' and failed`. Do not invent undocumented fields or syntax. If a query fails, simplify it to one documented predicate.

runs_issues_list

List linked issues for a run (/api/v2/{project_id}/issues?run_id=...)

runs_issues_link

Link issue to a run (/api/v2/{project_id}/issues)

runs_issues_unlink

Unlink issue from a run (/api/v2/{project_id}/issues/{id})

testruns_list

List testruns (/api/v2/{project_id}/testruns)

testruns_get

Get testrun by ID

testruns_create

Create testrun (/api/v2/{project_id}/testruns)

testruns_update

Update testrun (/api/v2/{project_id}/testruns/{id})

testruns_delete

Delete testrun (/api/v2/{project_id}/testruns/{id})

testruns_search

Search testruns (delegates to testruns list; docs has no dedicated search parameter)

testruns_issues_list

List linked issues for a testrun (/api/v2/{project_id}/issues?testrun_id=...)

testruns_issues_link

Link issue to a testrun (/api/v2/{project_id}/issues)

testruns_issues_unlink

Unlink issue from a testrun (/api/v2/{project_id}/issues/{id})

rungroups_list

List run groups as tree (/api/v2/{project_id}/rungroups)

rungroups_get

Get run group by ID

rungroups_create

Create run group (/api/v2/{project_id}/rungroups)

rungroups_update

Update run group (/api/v2/{project_id}/rungroups/{id})

rungroups_delete

Delete run group (/api/v2/{project_id}/rungroups/{id})

steps_list

List steps (/api/v2/{project_id}/steps)

steps_get

Get step by ID

steps_create

Create step (/api/v2/{project_id}/steps)

steps_update

Update step (/api/v2/{project_id}/steps/{id})

steps_delete

Delete step (/api/v2/{project_id}/steps/{id})

snippets_list

List snippets (/api/v2/{project_id}/snippets)

snippets_get

Get snippet by ID

snippets_create

Create snippet (/api/v2/{project_id}/snippets)

snippets_update

Update snippet (/api/v2/{project_id}/snippets/{id})

snippets_delete

Delete snippet (/api/v2/{project_id}/snippets/{id})

labels_list

List labels (/api/v2/{project_id}/labels)

labels_get

Get label by slug

labels_create

Create label (/api/v2/{project_id}/labels)

labels_update

Update label (/api/v2/{project_id}/labels/{id})

labels_delete

Delete label (/api/v2/{project_id}/labels/{id})

tags_list

List tags with counts (/api/v2/{project_id}/tags)

tags_get

Get tests by tag title (/api/v2/{project_id}/tags/{id})

tags_search

Search by tag title (delegates to tags_get)

milestones_list

List milestones (/api/v2/{project_id}/milestones)

milestones_get

Get milestone by ID

issues_list

List linked issues (/api/v2/{project_id}/issues)

issues_create

Link issue to resource (/api/v2/{project_id}/issues)

issues_delete

Unlink issue (/api/v2/{project_id}/issues/{id})

issues_search

Search issues (delegates to issues_list filters)

tests_attachments_list

List attachments for a test (/api/v2/{project_id}/attachments?test_id=...)

tests_attachments_upload

Upload one attachment to a test (/api/v2/{project_id}/attachments?test_id=...)

tests_attachments_delete

Delete attachment from a test (/api/v2/{project_id}/attachments/{id}?test_id=...)

suites_attachments_list

List attachments for a suite (/api/v2/{project_id}/attachments?suite_id=...)

suites_attachments_upload

Upload one attachment to a suite (/api/v2/{project_id}/attachments?suite_id=...)

suites_attachments_delete

Delete attachment from a suite (/api/v2/{project_id}/attachments/{id}?suite_id=...)

testruns_attachments_list

List attachments for a testrun (/api/v2/{project_id}/attachments?testrun_id=...)

testruns_attachments_upload

Upload one attachment to a testrun (/api/v2/{project_id}/attachments?testrun_id=...)

testruns_attachments_delete

Delete attachment from a testrun (/api/v2/{project_id}/attachments/{id}?testrun_id=...)

plans_list

List plans (/api/v2/{project_id}/plans)

plans_get

Get plan by ID

plans_create

Create plan (/api/v2/{project_id}/plans). TQL (Testomat.io Query Language) is a string expression passed in `tql` to select tests included in a plan. Supported syntax includes logical operators `and`, `or`, `not`, equality operators `==` and `!=`, list membership `in [...]`, `%` for partial text match on supported text fields, and parentheses for grouping. Ordered comparisons `>`, `<`, `>=`, `<=` are for ordered fields such as `priority`, dates, and numeric counters/durations. Use quotes for string values, for example `state == 'automated'`. Plan TQL uses documented test variables: `tag`, `label`, `priority`, `issue`, `jira`, `state`, `status`, `custom_status`, `created_at`, `updated_at`, `last_run_at`, `executed_at`, `created_by`, `assigned_to`, `suite`, `test`, `shared`, `milestone`. Documented examples: `priority == 'high'`, `priority >= 'normal'`, `state == 'automated'`, `tag in ['smoke', 'stage1'] and status == 'failed'`, `suite % 'Checkout'`, `test % 'User login'`, `custom_status % 'issue'`, `created_at < 1.month_ago`, `jira in ['JST-1', 'JST-2']`, `milestone == 'Sprint 1'`. Use `tql` when you want the API to resolve matching tests automatically instead of sending explicit `test_ids`. Do not invent undocumented fields or syntax. If a query fails, simplify it to one documented predicate.

plans_update

Update plan (/api/v2/{project_id}/plans/{id}). TQL (Testomat.io Query Language) is a string expression passed in `tql` to select tests included in a plan. Supported syntax includes logical operators `and`, `or`, `not`, equality operators `==` and `!=`, list membership `in [...]`, `%` for partial text match on supported text fields, and parentheses for grouping. Ordered comparisons `>`, `<`, `>=`, `<=` are for ordered fields such as `priority`, dates, and numeric counters/durations. Use quotes for string values, for example `state == 'automated'`. Plan TQL uses documented test variables: `tag`, `label`, `priority`, `issue`, `jira`, `state`, `status`, `custom_status`, `created_at`, `updated_at`, `last_run_at`, `executed_at`, `created_by`, `assigned_to`, `suite`, `test`, `shared`, `milestone`. Documented examples: `priority == 'high'`, `priority >= 'normal'`, `state == 'automated'`, `tag in ['smoke', 'stage1'] and status == 'failed'`, `suite % 'Checkout'`, `test % 'User login'`, `custom_status % 'issue'`, `created_at < 1.month_ago`, `jira in ['JST-1', 'JST-2']`, `milestone == 'Sprint 1'`. Use `tql` when you want the API to resolve matching tests automatically instead of sending explicit `test_ids`. Do not invent undocumented fields or syntax. If a query fails, simplify it to one documented predicate.

plans_delete

Delete plan

plans_search

Search plans (delegates to plans list; docs has no dedicated search parameter)

plans_issues_list

List linked issues for a plan (/api/v2/{project_id}/issues?plan_id=...)

plans_issues_link

Link issue to a plan (/api/v2/{project_id}/issues)

plans_issues_unlink

Unlink issue from a plan (/api/v2/{project_id}/issues/{id})

requirements_list

List requirements (/api/v2/{project_id}/requirements)

requirements_get

Get requirement by ID

requirements_create

Create requirement (/api/v2/{project_id}/requirements)

requirements_update

Update requirement (/api/v2/{project_id}/requirements/{id})

requirements_delete

Delete requirement (/api/v2/{project_id}/requirements/{id})

requirements_search

Search requirements (delegates to requirements list with filters)

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "testomatio mcp server": {
            "testomatio": {
                "command": "npx",
                "args": [
                    "@testomatio/mcp",
                    "--token",
                    "testomat_YOUR_TOKEN_HERE",
                    "--project",
                    "YOUR_PROJECT_ID"
                ]
            }
        }
    }
}

McpServers

{
    "testomatio": {
        "command": "npx",
        "args": [
            "@testomatio/mcp",
            "--token",
            "testomat_YOUR_TOKEN_HERE",
            "--project",
            "YOUR_PROJECT_ID"
        ]
    }
}

Testomatio MCP Server

A Model Context Protocol (MCP) server for Testomatio API integration with AI assistants like Cursor.

Installation

Prerequisites

- Node.js 18 or higher (with built-in fetch support)
- npm or yarn package manager
- Testomatio account with API access

Install via npm

npm install -g @testomatio/mcp

Or run directly with npx

npx @testomatio/mcp --token <your-token> --project <project-id>

Usage

Command Line Options

The MCP server can be started using command line arguments or environment variables:

Using Command Line Arguments

```bash

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.