MCP.so
Sign In

Testomatio MCP Server

@testomatio

Basic information

Category

Other

Transports

stdio

Author

testomatio

About Testomatio MCP Server

MCP server or Testomat.io

Testomatio MCP Server config

Add this server to your MCP-compatible client using the configuration below.

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

Testomatio MCP Server tools

90

Check server status and active configuration

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.

Get test by ID

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

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

Delete test

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.

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

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

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

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

Get suite by ID

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

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

Delete suite

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

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

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

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

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.

Get run by ID

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

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

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

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.

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

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

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

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

Get testrun by ID

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

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

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

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

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

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

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

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

Get run group by ID

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

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

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

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

Get step by ID

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

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

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

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

Get snippet by ID

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

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

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

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

Get label by slug

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

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

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

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

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

Search by tag title (delegates to tags_get)

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

Get milestone by ID

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

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

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

Search issues (delegates to issues_list filters)

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

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

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

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

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

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

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

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

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

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

Get plan by ID

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.

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.

Delete plan

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

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

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

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

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

Get requirement by ID

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

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

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

Search requirements (delegates to requirements list with filters)

Overview

What is Testomatio MCP Server?

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.

How to use Testomatio MCP Server?

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.

Key features of Testomatio MCP Server

  • 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

Use cases of Testomatio MCP Server

  • AI assistant queries test details, suites, and runs in a Testomatio project
  • Developers get test plans and automated test results without leaving the editor
  • QA engineers manage test cases through natural language in Cursor
  • Retrieve automated tests filtered by tags (e.g., @smoke)

Frequently asked questions

1

What API token is required?

A valid Testomatio General API token starting with `testomat_`. It can be created in the user tokens page at https://app.testomat.io/account/access_tokens.

2

Where can I find my project ID?

The project ID appears in the URL when viewing your project on Testomatio: `https://app.testomat.io/projects/YOUR_PROJECT_ID`.

3

What are the runtime requirements?

Node.js 18 or higher with built-in fetch support. No additional dependencies are required.

4

How can I debug connection issues?

Set the `DEBUG=*` environment variable when starting the server to see detailed logs. Check internet connectivity, firewall rules, and token permissions.

5

Is there support for self-hosted Testomatio instances?

Yes. Use the `--base-url` flag or `TESTOMATIO_BASE_URL` environment variable to point to your custom instance.

Comments

More Other MCP servers