Testomatio MCP Server
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
Jump to
- 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:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Testomatio MCP ServerCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- 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
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



