A Model Context Protocol (MCP) server for Testomat.io API integration with AI assistants like Cursor.
- Node.js 18 or higher (with built-in fetch support)
- npm or yarn package manager
- Testomat.io account with API access
npx @testomatio/mcp --token <your-token> --project <project-id>
The MCP server can be started using command line arguments or environment variables:
# Using short flags
npx @testomatio/mcp -t testomat_YOUR_TOKEN_HERE -p your-project-id
# Using long flags
npx @testomatio/mcp --token testomat_YOUR_TOKEN_HERE --project your-project-id
# With custom base URL
npx @testomatio/mcp --token testomat_YOUR_TOKEN_HERE --project your-project-id --base-url https://your-instance.testomat.io
# Set environment variables
export TESTOMATIO_API_TOKEN=testomat_YOUR_TOKEN_HERE
export TESTOMATIO_BASE_URL=https://app.testomat.io # Optional, defaults to https://app.testomat.io
# Run with project ID
npx @testomatio/mcp --project your-project-id
# Or run directly with environment variables
TESTOMATIO_API_TOKEN=testomat_YOUR_TOKEN_HERE npx @testomatio/mcp --project your-project-id
- Go to Testomat.io
- Navigate to user tokens https://app.testomat.io/account/access_tokens
- Create and copy General API token (starts with
testomat_
)
Your project ID can be found in the URL when you're viewing your project:
https://app.testomat.io/projects/YOUR_PROJECT_ID
To use this MCP server with Cursor, add the following configuration to your Cursor settings:
Add this to your Cursor MCP settings (cursor-settings.json
or through the Cursor settings UI):
{
"mcpServers": {
"testomatio": {
"command": "npx",
"args": ["-y", "@testomatio/mcp@latest", "--token", "testomat_YOUR_TOKEN_HERE", "--project", "YOUR_PROJECT_ID"]
}
}
}
First, set your environment variables in your shell profile (.bashrc
, .zshrc
, etc.):
export TESTOMATIO_API_TOKEN=testomat_YOUR_TOKEN_HERE
Then add this to your Cursor MCP settings:
{
"mcpServers": {
"testomatio": {
"command": "npx",
"args": ["-y", "@testomatio/mcp@latest", "--project", "YOUR_PROJECT_ID"],
"env": {
"TESTOMATIO_API_TOKEN": "testomat_YOUR_TOKEN_HERE"
}
}
}
}
get_tests
– Get all tests (params:plan
,query
,state
,suite_id
,tag
,labels
) — api: GET/tests
search_tests
– Search tests (params:query
,tql
,labels
,state
,priority
,filter
,page
) — api: GET/tests
create_test
– Create a new test (params:suite_id
,title
,description
,code
,file
,state
,tags
,jira_issues
,assigned_to
,labels_ids
) — api: POST/tests
update_test
– Update an existing test (params:test_id
,suite_id
,title
,description
,code
,file
,state
,tags
,jira_issues
,assigned_to
,labels_ids
) — api: PUT/tests/{test_id}
search_suites
– Search suites (params:query
,labels
,state
,priority
,page
) — api: GET/suites
get_root_suites
– List root-level suites (no params) — api: GET/suites
get_suite
– Get one suite (params:suite_id
) — api: GET/suites/{suite_id}
get_runs
– List all runs (no params) — api: GET/runs
get_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
get_plans
– List all plans (params:detail
,labels
,page
) — api: GET/plans
get_plan
– Get one plan (params:plan_id
) — api: GET/plans/{plan_id}
Once configured, you can ask your AI assistant questions like:
- "Show me all the tests in the project"
- "Get the test runs for test ID abc123"
- "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 suite-123"
- "Update test test-456 to change its description and add @regression tag"
These queries retrieve general information without specific filtering:
- "Show me all the tests in the project" →
get_tests
tool - "What are the root suites in this project?" →
get_root_suites
tool - "Get all test runs" →
get_runs
tool - "Get all test plans for this project" →
get_plans
tool
These queries allow creating and updating tests:
- "Create a new test called 'Login validation' in suite suite-123" →
create_test
tool withtitle: "Login validation"
,suite_id: "suite-123"
- "Update test test-456 to change its description" →
update_test
tool withtest_id: "test-456"
,description: "new description"
- "Create an automated test with @smoke tag" →
create_test
tool withstate: "automated"
,tags: ["smoke"]
These queries target specific entities by ID:
- "Get test runs for test ID abc123" →
get_testruns
tool withtest_id: "abc123"
- "Show me details for test run xyz789" →
get_run
tool withrun_id: "xyz789"
- "Get suite details for suite-456" →
get_suite
tool withsuite_id: "suite-456"
These queries use advanced filtering capabilities:
- "List all automated tests with the @smoke tag" →
search_tests
tool withquery: "@smoke"
,state: "automated"
- "Find tests with priority high" →
search_tests
tool withpriority: "high"
- "Search for tests containing 'login'" →
search_tests
tool withquery: "login"
- "List tests tagged @critical or labelled 'ux' with high priority" →
search_tests
tool withtql: "tag == 'critical' or label == 'ux' and priority == 'high'"
- "Find tests linked to JIRA-123" →
search_tests
tool withtql: jira == 'BDCP-2'
The search_tests
tool supports TQL for complex filtering:
"tag == 'smoke' and state == 'manual'"
"priority == 'high' or label == 'ux'"
Tags can be searched using the @
prefix:
@smoke # Tests tagged with 'smoke'
@regression # Tests tagged with 'regression'
@critical # Tests tagged with 'critical'
Tests linked to Jira issues can be found using issue keys:
JIRA-123 # Tests linked to JIRA-123
PROJ-456 # Tests linked to PROJ-456
-
"API token is required" error
- Make sure your token starts with
testomat_
- Verify the token is correct in your Testomat.io project settings
- Make sure your token starts with
-
"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.io
- Verify 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
To see detailed logs when running the server:
DEBUG=* npx @testomatio/mcp --token <token> --project <project-id>
For detailed information about the underlying Testomat.io API, refer to the Testomat.io API Documentation.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
For support, please:
- Check the Testomat.io Documentation
- Open an issue on GitHub
- Contact Testomat.io support
- Initial release
- Support for all major Testomat.io API endpoints
- MCP-compatible tool interface
- Semantic XML formatting for LLM processing