QA MCP Server
An AI-powered QA automation server that integrates Jira, GitHub, Jenkins, AWS, and Webex into a unified interface for QA engineers.
README
QA MCP Server
An AI-powered QA automation server built on the Model Context Protocol (MCP). Integrates Jira, GitHub, Jenkins, AWS, and Webex into a unified interface for QA engineers.
Tool catalog: dwonng.github.io/qa-mcp-server — auto-generated from the
@mcp.tool()decorators inqa_mcp/server.pyon every push tomain.
Features
Jira Integration
- Find tickets ready for QA or in progress
- Claim tickets for validation (assign + set validator + update status)
- Mark tickets as passed/failed with formatted comments
- Generate AI-powered test cases from ticket descriptions
- Summarize comment threads
- Analyze stories and epics for QA readiness
GitHub Integration
- Find PRs linked to Jira tickets
- Check PR merge status and commit details
- Verify code changes before testing
Jenkins Integration
- Check E2E test results
- Trigger builds with custom parameters
- Monitor build history
- Wait for builds and update PR descriptions with results
AWS Integration
- Verify Lambda deployments via last-modified timestamps
- Compare deployments across environments
- Confirm code is deployed before testing
Webex Integration
- List and read messages from Webex rooms
- Search for discussions about specific topics
- Post updates and notifications
- AI-powered conversation summaries
Quick Start
Prerequisites
- Python 3.11+
- Docker (recommended) or local Python environment
- API tokens for the services you want to use
Quick Install (Pre-built Image)
Add to your MCP configuration (~/.cursor/mcp.json):
{
"mcpServers": {
"qa-automation": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "JIRA_URL=https://your-jira.atlassian.net",
"-e", "JIRA_PERSONAL_TOKEN=your_token",
"-e", "GITHUB_TOKEN=ghp_your_token",
"ghcr.io/dwonng/qa-mcp-server:latest"
]
}
}
}
Full Installation
-
Clone the repository
git clone https://github.com/DwonnG/qa-mcp-server.git cd qa-mcp-server -
Create your config
cp config_example.py config.py # Edit config.py with your Jira field IDs, Jenkins paths, etc. -
Add to your MCP client with all integrations:
{ "mcpServers": { "qa-automation": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "JIRA_URL=https://your-jira.atlassian.net", "-e", "JIRA_PERSONAL_TOKEN=your_token", "-e", "GITHUB_HOST=https://api.github.com", "-e", "GITHUB_TOKEN=ghp_your_token", "-e", "JENKINS_URL=https://your-jenkins.com", "-e", "JENKINS_USER=your_user", "-e", "JENKINS_TOKEN=your_token", "-e", "AWS_REGION=us-east-1", "-e", "WEBEX_TOKEN=your_webex_token", "-v", "$HOME/.aws:/root/.aws:ro", "-v", "$HOME/.config/qa-mcp-server/config.py:/app/config.py:ro", "ghcr.io/dwonng/qa-mcp-server:latest" ] } } }
Note: Mount your
config.pyfor custom JQL templates, field mappings, and Jenkins job paths.
Local Development
# Create virtual environment
python -m venv venv
source venv/bin/activate # or `venv\Scripts\activate` on Windows
# Install dependencies
pip install -r requirements.txt
# Run the server
python run.py
Configuration
config.py
This file contains organization-specific settings:
| Setting | Description |
|---|---|
JIRA_FIELDS |
Custom field IDs for your Jira instance |
JIRA_TRANSITIONS |
Workflow transition IDs |
REPO_LAMBDA_MAP |
Maps repos to Lambda function names |
JENKINS_JOBS |
Jenkins job paths |
JQL_TEMPLATES |
JQL query templates |
RELEASE_TESTING |
Template Epic key for release testing cloning |
See config_example.py for a template with documentation.
Environment Variables
| Variable | Required | Description |
|---|---|---|
JIRA_URL |
Yes | Your Jira instance URL |
JIRA_PERSONAL_TOKEN |
Yes | Jira API token or PAT |
JIRA_VERIFY_SSL |
No | Set to false for self-signed certs |
GITHUB_HOST |
No | GitHub API URL (default: api.github.com) |
GITHUB_TOKEN |
Yes | GitHub personal access token |
JENKINS_URL |
Yes* | Jenkins server URL |
JENKINS_USER |
Yes* | Jenkins username |
JENKINS_TOKEN |
Yes* | Jenkins API token |
AWS_REGION |
No | AWS region (default: us-east-1) |
WEBEX_TOKEN |
No | Webex bot or personal token |
*Required only if using Jenkins features
Available Tools
Jira Tools
qa_get_qa_queue- Find tickets waiting in the QA queue ready to be testedqa_find_in_progress- Find tickets developers are working onqa_claim_ticket- Claim a ticket for QA validationqa_resolve_pass- Mark ticket as QA passedqa_fail_ticket- Mark ticket as QA failed with bug reportqa_add_comment- Add a comment to any ticketqa_generate_test_cases- AI-generated test casesqa_summarize_comments- Summarize ticket commentsqa_analyze_story- Analyze story for QA readinessqa_analyze_epic- Analyze epic for release readinessqa_clone_release_epic- Clone release testing template Epic and tasks for a new version
GitHub Tools
qa_get_pr_info- Get PR detailsqa_find_prs_for_ticket- Find PRs linked to a Jira ticketqa_find_pr_for_commit- Find PR that introduced a commit
Jenkins Tools
qa_check_e2e_tests- Check E2E test resultsqa_get_recent_builds- Get build historyqa_trigger_e2e_tests- Trigger a test buildqa_get_my_test_builds- View your Jenkins test buildsqa_wait_for_build_and_update_pr- Wait for build and update PR
AWS Tools
qa_check_deployment- Verify Lambda deploymentqa_check_all_deployments- Check all Lambdas for a repoqa_compare_environments- Compare deployments across envsqa_get_deployment_summary- Formatted deployment status
Webex Tools
webex_list_rooms- List accessible Webex roomswebex_get_messages- Read messages from a roomwebex_summarize_room- AI summary of conversationwebex_post_message- Post a messagewebex_search_messages- Search for messages
Workflow Tools
qa_get_ticket_context- Full context (Jira + PRs + deployment)qa_verify_vulnerability_resolved- Verify vuln fix: find PR, check merge, verify deployment, check tests, resolve ticketqa_verify_and_resolve_vulnerability- One-click vuln verification
1-minute demo
See DEMO_1_MINUTE.md for a scripted 1-minute demo: find ready tickets → get details → AI test cases (optional: claim ticket).
Example Usage
You: "Are there any tickets ready for QA?"
AI: Found 3 tickets in QA status...
You: "Claim PROJ-12345 for QA"
AI: Claimed! Assigned to you, validator set, status updated to In Progress.
You: "Check if the PR for PROJ-12345 is merged and deployed"
AI: PR #456 merged 2 hours ago. Lambda last modified 1 hour ago. Deployed!
You: "Mark PROJ-12345 as passed - verified login flow works correctly"
AI: Resolved as passed with QA comment added.
You: "Clone the release testing template for version 3.3.0"
AI: Created new Epic O365-50500 "Release 3.3.0 Testing" with 8 test tasks cloned.
Project Structure
qa-mcp-server/
├── run.py # Entry point
├── config.py # Your settings (git-ignored)
├── config_example.py # Settings template
├── requirements.txt # Dependencies
├── Dockerfile
├── README.md
├── LICENSE
│
├── qa_mcp/ # Main package
│ ├── __init__.py
│ ├── server.py # MCP server with all tools
│ ├── handlers.py # AI analysis handlers
│ ├── prompts.py # AI prompt templates
│ │
│ └── clients/ # Service integrations
│ ├── __init__.py
│ ├── jira.py
│ ├── github.py
│ ├── jenkins.py
│ ├── aws.py
│ ├── webex.py
│ └── ai.py
│
└── examples/ # Configuration examples
├── env.example # Environment variables template
└── mcp_config.json # MCP client config example
Architecture
┌─────────────────────────────────────────────────────────────┐
│ MCP Client │
│ (Cursor, Claude Desktop) │
└─────────────────────────┬───────────────────────────────────┘
│ MCP Protocol
┌─────────────────────────▼───────────────────────────────────┐
│ QA MCP Server │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Jira │ │ GitHub │ │ Jenkins │ │ AWS │ │
│ │ Client │ │ Client │ │ Client │ │ Client │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │ │
│ ┌────▼─────────────▼─────────────▼─────────────▼────┐ │
│ │ config.py │ │
│ │ (Organization-specific settings) │ │
│ └────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
Roadmap
v1.1 - Modular Integrations
- [ ] Feature flags to enable/disable integrations (Webex, Jenkins, AWS)
- [ ] Only register MCP tools for configured services
- [ ] Graceful handling when optional services aren't configured
v1.2 - Flexible Jira Support
- [ ] Make custom fields (validator, test_result) optional
- [ ] Support Jira Cloud and Jira Server/Data Center
- [ ] Configurable workflow transitions (not hardcoded IDs)
v1.3 - CI/CD Abstraction
- [ ] Abstract CI/CD interface (not just Jenkins)
- [ ] GitHub Actions support
- [ ] GitLab CI support
v1.4 - Deployment Verification
- [ ] Abstract deployment checker (not just AWS Lambda)
- [ ] Kubernetes deployment status
- [ ] Generic health check endpoints
v1.5 - Testing & Quality
- [ ] Unit tests for clients
- [ ] Integration test examples
- [ ] CI pipeline for the project itself
Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
License
MIT License - see LICENSE file for details.
Acknowledgments
- Built with FastMCP
- Inspired by the need to automate repetitive QA tasks
- Thanks to the MCP community for the protocol specification
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.