Collection of Model Context Protocol (MCP) servers for software testing tools and quality assurance
Enables agentic testing in MCP-native IDEs like Cursor and GitHub Codespaces. Transform your AI assistant into an intelligent testing agent that can create, execute, and maintain tests autonomously.
Model Context Protocol (MCP) servers bridge AI agents with testing tools. Instead of manually writing test scripts, your AI assistant can:
- Execute Playwright tests in real-time
- Generate test cases based on application state
- Debug failures by inspecting DOM and logs
- File bugs in Jira/ADO directly from test results
- Self-heal tests when UI changes break selectors
Read our research paper on MCP in software testing.
- Node.js 16+
- An MCP-native IDE (Cursor, Codespaces, or compatible)
- Testing framework installed (Playwright, Selenium, etc.)
# Clone the repository
git clone https://github.com/ElaMCB/mcp-testing-servers.git
cd mcp-testing-servers
# Install dependencies
npm install
# Install Playwright (for Playwright MCP server)
npm install playwrightFor Cursor:
- Open Settings → MCP Servers
- Add a new server configuration
- Example for Playwright server:
{
"mcpServers": {
"playwright": {
"command": "node",
"args": ["./servers/playwright/server.js"],
"env": {
"PLAYWRIGHT_BROWSERS_PATH": "0"
}
}
}
}For GitHub Codespaces:
Add to .vscode/settings.json:
{
"mcp.servers": {
"playwright": {
"command": "node",
"args": ["./servers/playwright/server.js"]
}
}
}Purpose: Browser automation and end-to-end testing
Tools:
launch_browser(url)- Launch browser and navigate to URLget_page_content(session_id)- Get current page DOM and stateperform_action(session_id, action, selector)- Click, fill, select elementsexecute_test_script(session_id, code)- Run Playwright code in live contextcapture_screenshot(session_id)- Take screenshots for debuggingrun_test_file(file_path)- Execute a Playwright test file
Example Usage:
// Your AI agent can now:
// 1. Launch browser: launch_browser("https://app.example.com")
// 2. Inspect page: get_page_content(session_id)
// 3. Perform actions: perform_action(session_id, "click", "#login-button")
// 4. Generate tests based on actual UI structurePurpose: Cross-browser Selenium automation
Tools:
create_driver(browser)- Create WebDriver instancenavigate_to(url)- Navigate to URLfind_elements(selector)- Locate page elementsexecute_script(js_code)- Run JavaScript in browser context
Purpose: Autonomous bug filing and issue management
Tools:
create_issue(title, description, type)- Create Jira issuesearch_issues(jql_query)- Search using JQLadd_comment(issue_key, comment)- Add comment to issuelink_issues(issue_key_1, issue_key_2)- Link related issuesupdate_issue(issue_key, fields)- Update issue fields
Setup:
export JIRA_URL="https://your-org.atlassian.net"
export JIRA_EMAIL="your-email@example.com"
export JIRA_API_TOKEN="your-api-token"Purpose: Work item management and build integration
Tools:
create_bug(title, description, project)- Create bug work itemget_test_runs(project_id)- Retrieve test run resultsget_latest_build(definition_id)- Get latest build statuslink_work_items(work_item_id_1, work_item_id_2)- Link work itemsupdate_work_item(id, fields)- Update work item fields
Setup:
export AZURE_DEVOPS_ORG="your-org"
export AZURE_DEVOPS_PROJECT="your-project"
export AZURE_DEVOPS_PAT="your-personal-access-token"Purpose: Aggregate and analyze test execution results
Tools:
get_test_results(suite, time_range)- Retrieve test resultsanalyze_test_coverage(coverage_file)- Analyze code coveragecompare_test_runs(run_id_1, run_id_2)- Compare two test runsget_failing_tests(suite)- List currently failing tests
Purpose: Cypress end-to-end testing integration
Tools:
run_cypress_test(spec_file)- Execute Cypress testopen_cypress()- Open Cypress Test Runnerget_cypress_results()- Get latest test run results
Purpose: REST API testing and validation
Tools:
make_api_request(method, url, headers, body)- Execute API callsvalidate_api_response(response, schema)- Validate against JSON schemarun_api_test_suite(suite_file)- Run collection of API tests
Your AI agent in the IDE can now:
- Detect code changes via MCP file system resources
- Analyze related test files to understand patterns
- Explore application UI using Playwright MCP server
- Generate tests directly into your project
- Execute and validate automatically
Example Prompt:
"Write a test for the new login feature I just added to login.js"
The agent will:
- Read
login.jsto understand the feature - Check existing test patterns in your project
- Launch browser and explore the login UI
- Generate contextually appropriate Playwright test
- Write it to the correct test file
"Run the regression suite and file bugs for any failures"
The agent will:
- Execute all Playwright tests
- On failure: capture screenshots, inspect DOM, check logs
- Search Jira for duplicate issues
- Create new bug with detailed reproduction steps
- Update test code if selector changes (self-heal)
"Audit my test suite and fix any broken tests"
The agent will:
- Analyze test files for flaky tests and outdated selectors
- Validate selectors against current application state
- Automatically refactor or remove obsolete tests
- Create PR with improvements
┌─────────────────────────────────────────────────────────┐
│ MCP-Native IDE (Cursor, Codespaces, etc.) │
│ ┌───────────────────────────────────────────────────┐ │
│ │ AI Agent (Native MCP Client) │ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ Playwright│ │ Jira │ │ ADO │ │ │
│ │ │MCP Server│ │MCP Server│ │MCP Server│ ... │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ │ │ │ │ │ │
│ │ └────────────┴────────────┘ │ │
│ │ (Native MCP Protocol) │ │
│ └───────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
// Your AI agent uses these tools automatically, but here's what happens:
// 1. Launch browser
const session = await mcp.callTool('playwright', 'launch_browser', {
url: 'https://app.example.com'
});
// 2. Get page content
const content = await mcp.callTool('playwright', 'get_page_content', {
session_id: session.id
});
// 3. Perform actions
await mcp.callTool('playwright', 'perform_action', {
session_id: session.id,
action: 'fill',
selector: '#email',
value: 'user@example.com'
});
// 4. Capture evidence
const screenshot = await mcp.callTool('playwright', 'capture_screenshot', {
session_id: session.id
});// After a test failure, agent automatically:
// 1. Capture failure evidence
const screenshot = await playwright.capture_screenshot();
const pageState = await playwright.get_page_content();
// 2. Check for duplicates
const duplicates = await jira.search_issues(
`summary ~ "Login button not clickable" AND status != Closed`
);
// 3. Create bug if no duplicate
if (duplicates.length === 0) {
await jira.create_issue({
title: 'Login button not clickable on /login page',
description: `Test failed at ${new Date()}\n\nScreenshot: ${screenshot}\n\nPage state: ${JSON.stringify(pageState)}`,
type: 'Bug',
priority: 'High'
});
}-
Credentials Management:
- Never commit API keys or tokens
- Use environment variables or IDE secrets
- Rotate credentials regularly
-
Permission Scoping:
- Grant MCP servers minimum required permissions
- Use read-only credentials when possible
- Audit MCP tool usage logs
-
Network Security:
- Run MCP servers on localhost in development
- Use TLS for remote MCP servers
- Restrict network access in CI/CD
-
Test Data Isolation:
- Use separate test environments
- Clean up test data after runs
- Never access production data
# Run all server tests
npm test
# Test specific server
npm test -- playwright
npm test -- jira
npm test -- azure-devops
# Run with coverage
npm run test:coverage- MCP Protocol Specification
- Research Paper: MCP in Software Testing
- Playwright Documentation
- Jira REST API
- Azure DevOps REST API
We welcome contributions! This is foundational infrastructure for agentic testing.
- Fork the repository
- Create a feature branch (
git checkout -b feature/new-mcp-server) - Implement your MCP server following the existing patterns
- Add tests and documentation
- Submit a pull request
- Create directory:
servers/your-server/ - Implement server following MCP protocol
- Export
ToolsMCPServerclass - Add tests in
servers/your-server/__tests__/ - Document tools in README
- Playwright MCP Server
- Jira MCP Server
- Azure DevOps MCP Server
- Selenium MCP Server
- Cypress MCP Server
- API Testing MCP Server
- Test Results Aggregator Server
- Performance Testing Server
- Security Scanning Server
- Database Testing Server
MIT License - see LICENSE file for details.
Ela MCB - AI-First Quality Engineer
- Portfolio: https://elamcb.github.io
- Research: https://elamcb.github.io/research
- GitHub: https://github.com/ElaMCB
- Anthropic for the Model Context Protocol
- Playwright Team for excellent browser automation
- Atlassian and Microsoft for API access
Transform your IDE into an intelligent testing agent.
Built for the age of agentic testing.