The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Testdino MCP listing page.
A Model Context Protocol (MCP) server that connects TestDino to AI agents. This server enables you to interact with your TestDino test data directly through natural language commands.
Add this to your MCP client config (~/.cursor/mcp.json for Cursor), then restart the client:
Get your PAT from TestDino → User Settings → Personal Access Tokens, then ask your assistant: "Check TestDino health." You should see your account, organizations, and projects. Full setup for Cursor and Claude Desktop is in Integration.
This MCP server bridges the gap between your TestDino test management platform and AI agents. Instead of manually navigating the TestDino dashboard, you can ask your AI assistant to:
All through simple conversational commands.
passed, failed, blocked, skipped, retest — exactly as the UI does.The server provides 35 tools across nine domains:
Test Execution & Results:
health - Verify your connection and validate your PAT. Shows account information, available organizations, and projects with access permissions.list_testruns - Browse test runs with filters (branch, time interval, author, commit, environment). Supports pagination and batch operations.get_run_details - Get comprehensive details about a specific test run including statistics, test suites, test cases, and metadata. Supports batch operations (comma-separated IDs, max 20).list_testcase - List test cases with comprehensive filtering (by test run, status, browser, error category, branch, environment, commit, author, spec file, tags, runtime, artifacts, and more). Can filter by test run criteria or directly by test case properties.get_testcase_details - Get detailed information about a specific test case including error messages, stack traces, test steps, console logs, and artifacts. Can identify by testcase_id alone or by testcase_name with testrun_id/counter.debug_testcase - Debug a test case by aggregating historical failure data across multiple executions. Returns failure patterns, error categories, common error messages, error locations, browser-specific issues, and a pre-formatted debugging prompt for AI analysis. Perfect for root-cause analysis and identifying flaky test behavior.get_audit_report - Fetch the audit context (server-curated prompt + top failing / flaky / slow tests for the branch) to start a new audit, browse historical reports, or retrieve one by reportId.submit_audit_report - Submit a completed audit report (score, findings, recommendations, markdown) to TestDino.Test Case Management:
list_manual_test_cases - Search and list manual test cases with comprehensive filtering (project, suite, status, priority, severity, type, layer, behavior, automation status, tags, flaky status).get_manual_test_case - Get detailed information about a specific manual test case including steps, custom fields, preconditions, postconditions, and all metadata.create_manual_test_case - Create new manual test cases with steps, preconditions, postconditions, and metadata (priority, severity, type, layer, behavior).update_manual_test_case - Update existing manual test cases (title, description, steps, status, priority, severity, type, layer, behavior, preconditions, postconditions).list_manual_test_suites - List test suite hierarchy to find suite IDs for organization. Supports filtering by parent suite.create_manual_test_suite - Create new test suite folders to organize test cases. Supports nested suites by providing parentSuiteId.Releases (a.k.a. Milestones):
list_releases - Browse releases for a project with filters (search, type, completion status, parent release). Releases group runs + sessions and can nest up to 3 levels deep.get_release - Get full details for one release including dates, status, parent/root hierarchy, and rolled-up progress stats across all runs in this release and its descendants. Accepts internal _id or counter-style ID like MS-12.create_release - Create a new release with name, type, dates, and optional parent for nesting.update_release - Modify an existing release — name, dates, completion flags, type, linked issues. Closed releases are still editable.Manual Test Runs:
list_manual_runs - Browse manual runs in a project. Filter by status, state, environment, release, tags, or free-text name search.get_manual_run - Get full details for one run — test stats (total/passed/failed/blocked/untested), contributors, attachments, linked release. Accepts internal _id or counter-style ID like RUN-12.create_manual_run - Create a new manual run. Choose selectionMode='all' for every case in the project, or 'selected' with suite/case IDs to scope it. Attach to a release with releaseId.update_manual_run - Modify run metadata — name, environment, state, release attachment, tags. Closed runs are read-only except for releaseId.list_run_test_cases - Get the per-case execution rows inside a run — exactly what the UI shows in the run's test-case table. Each row includes the current assignee and current result. Filter by assignee (email or _id) or result.update_run_test_case - Set the assignee and/or result for one test case inside a run — same as clicking "Assign to" + the result pill in the UI. Works even on untested cases (auto-creates the per-case row on first edit). Accepts caseKey (TC-156), test case _id, or the internal tcm_rtc_… ID.Exploratory Sessions:
list_sessions - Browse exploratory sessions in a project. Filter by status, state, sessionType, assignee (email or _id), release, tags.get_session - Get full details for one session — name, mission, status, assignee, linked release, findings. Accepts internal _id or counter-style ID like SES-12.create_session - Create a new exploratory session with mission/charter, sessionType, assignee, estimate, and optional release attachment.update_session - Modify session metadata — name, mission, assignee, state, estimate, linked issues, attachments.Error Analysis:
get_run_error_clusters - Group a run's failing tests by error signature to triage at scale. Surfaces clusters of tests that share the same root-cause error, with an optional status filter (all, failed, flaky). Use it after list_testruns to understand why a run failed.Integrations (Issue Trackers):
connect_integration - Return an OAuth connect URL for a provider (Jira, Linear, Asana, monday.com, GitHub). Show the URL to the user to authorize; do not open it programmatically.get_integration_status - Report whether a provider is connected for a project. Set includeCreateOptions to also fetch the fields available for issue creation. Call this before create_external_issue.create_external_issue - File an issue in a connected tracker (Jira, Linear, Asana, monday.com) from a TestDino source entity such as a failing test case or run. Supports preview and idempotent retries via idempotencyKey.get_external_issue - Fetch previously created issues by their IDs or keys (one or many) and return their current status in the provider (Jira, Linear, Asana).Provider support: All providers can be connected and status-checked. Issue creation works with Jira, Linear, Asana, and monday.com. Issue read-back works with Jira, Linear, and Asana. GitHub is supported as a PR/CI integration, not an issue tracker.
AI Insights:
get_ai_insights - TestDino's AI analysis at three levels: project overview (per-category failure counts + top offenders over a date range), run (AI failure categorization, failure clusters, error-analysis table, LLM-written summary), and test case (recommendations + quick fixes). Returns a disabled status when AI features are turned off for the project (Settings → AI).get_trace_analysis - Resolve a failing test's hosted Playwright trace to a short-lived download URL and return a runbook for local trace-CLI debugging (open → actions → snapshot → close).AI Insights are also available inline: pass
include_ai_insights: truetoget_run_details(attaches the run's AI Insights underai_insights) ordebug_testcase(attaches recommendations + quick fixes underai_fixes).
Option 1: Via npx (Recommended - No Installation)
Option 2: Global Installation
testdino-mcpOption 3: Project Installation
node_modulesnpx @testdino/mcpOpen or create the MCP configuration file:
%APPDATA%\Cursor\mcp.json~/.cursor/mcp.json.cursor/mcp.json in your project rootIf you are using npx or installing inside project, Add the configuration:
Important: Replace Your PAT here with your actual Personal Access Token (PAT) from Step 1.
If you prefer to install globally instead of using npx or project installation:
Then use this configuration:
The server uses the standard MCP protocol, so it will work with other MCP-compatible clients as well.
Claude Desktop uses the same config shape, in a different file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonRestart Claude Desktop, then ask "Check TestDino health" to verify.
By default the server talks to https://mcp.testdino.com. To point it at a local API while developing, set TESTDINO_API_URL (see .env.example):
Once configured, simply talk to your AI assistant in natural language. Important: Tools require your Personal Access Token (PAT) configured as TESTDINO_PAT in mcp.json. The PAT automatically provides access to all organizations and projects you have permissions for.
Try these natural language commands in Cursor or Claude Desktop (or other MCP-compatible clients):
Connection & Setup:
Exploring Test Runs:
Analyzing Test Results:
Debugging Test Failures:
Managing Manual Test Cases:
Releases:
Manual Test Runs:
Assigning Cases & Recording Verdicts in a Run:
Exploratory Sessions:
debug_testcaseThe debug_testcase tool helps you understand why tests are failing by analyzing historical execution data:
Example Workflow:
debug_testcase with projectId and testcase_name