Full-MCP-QA
Creates GitHub issues for failed tests and opens pull requests with generated passing tests, linking back to Jira.
Allows posting QA test results to Jira issues, commenting on issues, transitioning tickets, and managing issue labels.
Sends notifications about test results to a Slack channel via webhook or bot token.
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., "@Full-MCP-QAshow me the latest QA metric and integrations status"
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.
Website QA Agent
Standalone Jira-to-Playwright QA agent for testing any website URL, then posting results to Jira, Slack, and GitHub when those integrations are configured.
Setup
Copy
.env.exampleto.env.Fill in
TARGET_URL, Jira credentials, andOPENAI_API_KEY.Optional: fill
SLACK_WEBHOOK_URL,GITHUB_REPO,GITHUB_TOKEN,JIRA_TRANSITION_DONE_ID, andJIRA_WEBHOOK_SECRET.Install dependencies:
npm install
npx playwright install chromiumRelated MCP server: Uptime Agent MCP Server
Commands
Run the baseline target smoke test:
npm run testCheck any Jira issue before generation:
npm run agent:check-ticket -- ISSUE-KEYRun autonomous QA once for all ready Jira tickets:
npm run agent:autoRun autonomous QA once for one explicit issue:
npm run agent:auto -- --issue ISSUE-KEYRun continuously, polling Jira for ready tickets:
npm run agent:auto -- --watchStart the Jira webhook listener:
npm run agent:webhookJira Automation should send a POST request to /jira/webhook?secret=... with this JSON body:
{
"issueKey": "{{issue.key}}"
}Find and save a Done-like Jira transition id:
npm run agent:find-transition
npm run agent:find-transition -- ISSUE-KEYGenerate a test and pause for manual approval:
npm run agent:start -- ISSUE-KEYApprove or reject:
npm run agent:resume -- ISSUE-KEY approve
npm run agent:resume -- ISSUE-KEY rejectGenerated tests are written to tests/generated/ only after approval.
Autonomous mode looks for Jira issues matching JIRA_LABEL, skips issues already labeled with JIRA_AUTONOMOUS_FAILURE_LABEL, and requires no approval prompt. It still guard-checks generated code before writing or running it. Failed or unsafe tickets are labeled with JIRA_AUTONOMOUS_FAILURE_LABEL so the watcher does not retry the same failing ticket forever.
Webhook mode uses the same autonomous flow as agent:auto -- --issue ISSUE-KEY. Duplicate webhooks for the same currently running issue are accepted but skipped.
On approval, the agent now:
runs the generated Playwright test
writes run history to SQLite and
metrics/ledger.jsonlcomments the result back to Jira
sends a Slack message when
SLACK_WEBHOOK_URLis set, or whenSLACK_BOT_TOKENandSLACK_CHANNEL_IDare setcreates a GitHub issue for failed tests when
GITHUB_REPOand eitherGITHUB_TOKENorGITHUB_PERSONAL_ACCESS_TOKENare setcreates or updates a branch like
ai-qa/SCRUM-4, commits the generated passing test, opens/reuses a PR, and links it back to Jiratransitions passed Jira tickets when
JIRA_TRANSITION_DONE_IDis set
Blank optional integration values are skipped, so local test generation still works while Slack, GitHub, or Jira transition credentials are being added. Public comments and notifications do not include model token usage.
Check stored run history:
npm run agent:historyGitHub Actions CI
The workflow in .github/workflows/qa-agent.yml runs every 12 hours and can also be triggered manually from GitHub Actions.
It runs:
npm run typechecknpm testnpm run agent:auto
Configure these repository secrets before enabling scheduled runs:
TARGET_URL
JIRA_BASE_URL
JIRA_EMAIL
JIRA_API_TOKEN
JIRA_PROJECT_KEY
JIRA_LABEL
JIRA_TRANSITION_DONE_ID
JIRA_AUTONOMOUS_FAILURE_LABEL
OPENAI_API_KEY
SLACK_WEBHOOK_URL
SLACK_BOT_TOKEN
SLACK_CHANNEL_IDThe workflow uses GITHUB_REPO=tamzidnahian/Full-MCP-QA and the built-in GitHub Actions GITHUB_TOKEN for failure issue creation plus generated-test PR branches. It uploads Playwright reports, test results, metrics, and state/agent.sqlite as artifacts, and caches state/ so future scheduled runs can reuse QA history.
MCP
Run the local MCP server:
npm run mcp:serverIt exposes qa_agent_status, which reports configured integrations and the latest QA metric.
First Target
Default target:
TARGET_URL=https://news.ycombinator.comGood first Jira issue description:
As a reader, I want to open Hacker News so that I can browse current stories.
Acceptance criteria:
- Open the homepage.
- The Hacker News navigation/header is visible.
- At least one story link is visible.
- The More link is visible.
- The test runs in Chromium.
- The test must not log in, vote, comment, or modify data.This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tamzidnahian/Full-MCP-QA'
If you have feedback or need assistance with the MCP directory API, please join our Discord server