Enables searching for tests linked to Jira issues using issue keys like 'JIRA-123' or 'PROJ-456', allowing integration between Testomat.io test management and Jira issue tracking.
Requires Node.js 18 or higher with built-in fetch support for running the MCP server, enabling the connection between Testomat.io and AI assistants.
Supports installation and execution via npm or npx, allowing easy deployment of the Testomat.io MCP server.
Provides semantic XML formatting for LLM processing, supporting the structured data exchange between Testomat.io and AI assistants.
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., "@Testomatio MCP Servershow me all tests with the 'regression' label"
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.
Testomat.io MCP Server
A Model Context Protocol (MCP) server for Testomat.io API integration with AI assistants like Cursor.
Installation
Prerequisites
Node.js 18 or higher (with built-in fetch support)
npm or yarn package manager
Testomat.io account with API access
Run directly with npx
Related MCP server: TaskMaster
Usage
Command Line Options
The MCP server can be started using command line arguments or environment variables:
Using Command Line Arguments
Using Environment Variables
Getting Your API Token
Go to Testomat.io
Navigate to user tokens https://app.testomat.io/account/access_tokens
Create and copy General API token (starts with
testomat_)
Getting Your Project ID
Your project ID can be found in the URL when you're viewing your project:
ID Formats
Testomatio uses specific ID formats for different resources:
Test IDs: Start with
Tprefix followed by 7 alphanumeric characters (e.g.,Ta1b2c3d4)Suite IDs: Start with
Sprefix followed by 7 alphanumeric characters (e.g.,Sx9y8z7w6)Total length: 8 characters including the prefix
Format:
[Prefix][7 alphanumeric characters]
When working with tools that require specific IDs, ensure you use the correct format with the appropriate prefix.
Integration with Cursor
To use this MCP server with Cursor, add the following configuration to your Cursor settings:
Option 1: Using npx (Recommended)
Add this to your Cursor MCP settings (cursor-settings.json or through the Cursor settings UI):
Option 2: Using Environment Variables
First, set your environment variables in your shell profile (.bashrc, .zshrc, etc.):
Then add this to your Cursor MCP settings:
Features
Tools
Tests
get_tests– Get all tests (params:plan,query,state,suite_id,tag,labels) — api: GET/testsget_test– Get a specific test by ID with all information including labels, tags, and metadata (params:test_id) — api: GET/tests/{test_id}search_tests– Search tests (params:query,tql,labels,state,priority,filter,page) — api: GET/testscreate_test– Create a new test (params:suite_id,title,description,code,file,state,tags,jira_issues,assigned_to,labels_ids,fields) — api: POST/testsupdate_test– Update an existing test (params:test_id,suite_id,title,description,code,file,state,tags,jira_issues,assigned_to,labels_ids,fields) — api: PUT/tests/{test_id}
Test Suites
search_suites– Search suites (params:query,labels,state,priority,page) — api: GET/suitesget_root_suites– List root-level suites (no params) — api: GET/suitesget_suite– Get one suite (params:suite_id) — api: GET/suites/{suite_id}create_suite– Create a new suite (params:title,description,parent_id,fields) — api: POST/suitescreate_folder– Create a new folder (params:title,description,parent_id,fields) — api: POST/suites
Labels
get_labels– Get all available labels with their IDs and configurationscreate_label– Create a new label with optional custom fieldunlink_label– Remove a label from a test or suite
Custom Fields and Labels
The MCP server provides two distinct ways to assign values to tests, suites, and folders:
1. Using labels_ids with label:value syntax
Direct label assignment with values using
label:valueformatGood for simple label assignments
Works with existing Testomatio labels
2. Using fields parameter (structured custom fields)
Structured way to set custom fields
Cleaner syntax for AI assistants
Supports any custom field defined in your Testomatio project
Maps to Testomatio's custom-fields API
Available for:
create_testandupdate_test- Test custom fieldscreate_suite- Suite custom fieldscreate_folder- Folder custom fields
Example Usage
Test Runs
get_runs– List all runs (no params) — api: GET/runsget_run– Get one run (params:run_id,tree) — api: GET/runs/{run_id}get_testruns– Runs for a test (params:test_id,finished_at_date_range) — api: GET/testruns
Test Plans
get_plans– List all plans (params:detail,labels,page) — api: GET/plansget_plan– Get one plan (params:plan_id) — api: GET/plans/{plan_id}
Example Usage in Cursor
Once configured, you can ask your AI assistant questions like:
"Show me all the tests in the project"
"Get details for test ID Ta1b2c3d4"
"Get the test runs for test ID Ta1b2c3d4"
"What are the root suites in this project?"
"Show me details for test run xyz789"
"List all automated tests with the @smoke tag"
"Get all test plans for this project"
"Create a new test called 'Login validation' in suite Sx9y8z7w6"
"Update test Ta1b2c3d4 to change its description and add @regression tag"
"Create a test with custom fields: priority='high', severity='critical', team='backend'"
"Update test Tb2c3d4e5 to set custom fields for risk score and assigned team"
"Create a new suite called 'Authentication Tests' with description 'All login and signup related tests'"
"Create a suite with custom fields for team ownership and priority level"
"Create a folder called 'API Tests' to organize API-related test suites with custom fields"
"Create a label called 'Severity' with color '#ffe9ad' and predefined values like 'Blocker', 'Critical', 'Major', 'Minor', 'Normal', 'Trivial'"
Query Patterns
Basic Information Queries
These queries retrieve general information without specific filtering:
"Show me all the tests in the project" →
get_teststool"What are the root suites in this project?" →
get_root_suitestool"Get all test runs" →
get_runstool"Get all test plans for this project" →
get_planstool
Test Management Queries
These queries allow creating and updating tests:
"Create a new test called 'Login validation' in suite Sx9y8z7w6" →
create_testtool withtitle: "Login validation",suite_id: "Sx9y8z7w6""Update test Ta1b2c3d4 to change its description" →
update_testtool withtest_id: "Ta1b2c3d4",description: "new description""Create an automated test with @smoke tag" →
create_testtool withstate: "automated",tags: ["smoke"]"Create a test with custom fields: priority='high', severity='critical'" →
create_testtool withtitle: "Test Title",suite_id: "Sx9y8z7w6",fields: { "priority": "high", "severity": "critical" }"Update test Tb2c3d4e5 to set custom fields for risk score and team" →
update_testtool withtest_id: "Tb2c3d4e5",fields: { "risk_score": "8.5", "team": "backend" }
Suite and Folder Management Queries
These queries help organize your test structure:
"Create a new suite called 'Authentication Tests'" →
create_suitetool withtitle: "Authentication Tests""Create a suite for login tests with description" →
create_suitetool withtitle: "Login Tests",description: "All login related test cases""Create a suite with custom fields for team ownership and priority level" →
create_suitetool withtitle: "Backend Tests",fields: { "team": "backend", "priority": "high" }"Create a folder called 'API Tests' under parent suite Sx9y8z7w6" →
create_foldertool withtitle: "API Tests",parent_id: "Sx9y8z7w6""Create a folder with custom fields for team and project" →
create_foldertool withtitle: "Integration Tests",fields: { "team": "qa", "project": "mobile-app" }"Create a test suite for payment features" →
create_suitetool withtitle: "Payment Features", description: "Tests covering payment processing""Create a folder to organize integration tests" →
create_foldertool withtitle: "Integration Tests"
Note: Suites can only contain other suites, while folders can contain both suites and folders (but no tests).
Label Creation Queries
These queries help create custom labels for better test categorization:
"Create a label called 'Severity' with red color" →
create_labeltool withtitle: "Severity",color: "#ff6b6b""Create a severity label with predefined values" →
create_labeltool withtitle: "Severity",color: "#ffe9ad",field: { "type": "list", "short": true, "value": "Blocker\nCritical\nMajor\nNormal\nMinor\nTrivial" }"Create a simple label for test types" →
create_labeltool withtitle: "Test Type",scope: ["tests", "suites"]"Create a label visible in test lists" →
create_labeltool withtitle: "Category",visibility: ["list"]
Specific Item Queries
These queries target specific entities by ID:
"Get details for test ID Ta1b2c3d4" →
get_testtool withtest_id: "Ta1b2c3d4""Get test runs for test ID Ta1b2c3d4" →
get_testrunstool withtest_id: "Ta1b2c3d4""Show me details for test run xyz789" →
get_runtool withrun_id: "xyz789""Get suite details for suite Sx9y8z7w6" →
get_suitetool withsuite_id: "Sx9y8z7w6"
Search and Filter Queries
These queries use advanced filtering capabilities:
"List all automated tests with the @smoke tag" →
search_teststool withquery: "@smoke",state: "automated""Search for tests containing 'login'" →
search_teststool withquery: "login""List tests tagged @critical or labelled 'ux' with critical severity" →
search_teststool withtql: "tag == 'critical' or label == 'ux' and severity == 'critical'""Find tests linked to JIRA-123" →
search_teststool withtql: jira == 'BDCP-2'
Advanced Query Syntax
Test Query Language (TQL)
The search_tests tool supports TQL for complex filtering:
Tag-Based Searches
Tags can be searched using the @ prefix:
Jira Integration
Tests linked to Jira issues can be found using issue keys:
Troubleshooting
Common Issues
"API token is required" error
Make sure your token starts with
testomat_Verify the token is correct in your Testomat.io project settings
"Project ID is required" error
Check that you're passing the correct project ID
Verify the project ID exists and you have access to it
Connection errors
Ensure you have internet connectivity
Check if your firewall allows connections to
app.testomat.ioVerify your API token has the necessary permissions
MCP server not starting in Cursor
Check Cursor's MCP logs for error messages
Ensure Node.js 18+ is installed and accessible
Try running the command manually first to test
Debug Mode
To see detailed logs when running the server:
API Reference
For detailed information about the underlying Testomat.io API, refer to the Testomat.io API Documentation.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Development Setup
Testing
The project includes comprehensive test coverage:
Unit Tests: Fast tests with mocked dependencies
Integration Tests: Real API tests against Testomat.io
Running Tests Locally
Environment Setup for Integration Tests
Create a .env file:
CI/CD
This project uses GitHub Actions for continuous integration:
✅ Unit Tests: Run on every push/PR across Node.js 18, 20, 22
✅ Integration Tests: Run daily and on main branch merges
✅ Coverage Reports: Automatic upload to Codecov
✅ Security: Secrets management for API credentials
Code Quality
Follow existing code style patterns
Add tests for new functionality
Update documentation when needed
Ensure all tests pass before submitting PRs
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
For support, please:
Check the Testomat.io Documentation
Open an issue on GitHub
Contact Testomat.io support
Changelog
v1.0.0
Initial release
Support for all major Testomat.io API endpoints
MCP-compatible tool interface
Semantic XML formatting for LLM processing