📖 Documentation

All 15 tools — parameters, return types, and integration examples.

Base MCP Endpoint

https://qa-mcp-server-theta.vercel.app/api/mcp

Handles both SSE (GET) and Streamable HTTP (POST) transports automatically.

Connecting from your language

Claude Desktop

// ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "qa-intelligence": {
      "url": "https://qa-mcp-server-theta.vercel.app/api/mcp"
    }
  }
}

Cursor / VS Code

// .cursor/mcp.json  or  .vscode/mcp.json
{
  "servers": {
    "qa-intelligence": {
      "type": "http",
      "url": "https://qa-mcp-server-theta.vercel.app/api/mcp"
    }
  }
}

Python

from mcp.client.streamable_http import streamablehttp_client
from mcp import ClientSession
import asyncio, json

async def main():
    async with streamablehttp_client(
        "https://qa-mcp-server-theta.vercel.app/api/mcp"
    ) as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()
            result = await session.call_tool(
                "generate_test_cases",
                { "feature_description": "User login with 2FA" }
            )
            print(json.dumps(result.content[0].text, indent=2))

asyncio.run(main())

TypeScript

import { Client } from '@modelcontextprotocol/sdk/client/index.js'
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'

const client = new Client({ name: 'my-app', version: '1.0' })
const transport = new StreamableHTTPClientTransport(
  new URL('https://qa-mcp-server-theta.vercel.app/api/mcp')
)
await client.connect(transport)

const result = await client.callTool('generate_test_cases', {
  feature_description: 'User login with 2FA',
  format: 'bdd',
})
console.log(result.content[0].text)

Java

// Using OkHttp — MCP Java SDK coming soon
// Direct HTTP call to the playground API endpoint:
OkHttpClient http = new OkHttpClient();
String body = """
  { "passcode": "qatools2026",
    "tool": "generate_test_cases",
    "args": { "feature_description": "User login with 2FA" } }
  """;
Request req = new Request.Builder()
  .url("https://qa-mcp-server-theta.vercel.app/api/playground")
  .post(RequestBody.create(body, MediaType.get("application/json")))
  .build();
Response res = http.newCall(req).execute();
System.out.println(res.body().string());

Tool Reference

✅generate_test_cases

Generate BDD Gherkin and/or plain test cases from a feature description. Returns structured JSON with IDs, priorities, steps, and tags.

Parameters

feature_description
required
string

The feature or user story to test

format
optionaldefault: "both"
"bdd" | "plain" | "both"

Output format

coverage_areas
optional
string

Specific areas to focus on

negative_cases
optionaldefault: true
boolean

Include negative/failure cases

Returns

{ summary, total_cases, test_cases[] }
🔌generate_api_tests

Generate ready-to-run API test scripts from an OpenAPI spec, cURL, or plain description.

Parameters

spec
required
string

OpenAPI YAML/JSON, cURL, or plain API description

framework
required
"postman" | "rest-assured" | "pytest-requests" | "supertest" | "karate"

Target framework

include_auth
optionaldefault: true
boolean

Include auth scenarios

include_negative
optionaldefault: true
boolean

Include error scenarios

Returns

{ summary, framework, scenarios[], code }
🤖convert_to_automation

Convert a manual test case into a runnable automation script with optional Page Object Model.

Parameters

test_case
required
string

Manual test case steps and expected results

framework
required
"playwright" | "selenium-java" | "selenium-python" | "cypress" | "webdriverio" | "appium"

Target framework

language
optional
string

Language override (uses framework default if not set)

base_url
optional
string

Application base URL

page_object_pattern
optionaldefault: false
boolean

Generate Page Object Model structure

Returns

{ framework, language, files[], dependencies[], setup_instructions, notes }
🗄️generate_test_data

Generate realistic test data with edge cases, boundaries, and special characters.

Parameters

schema_or_description
required
string

JSON schema or plain description of the data model

format
required
"json" | "csv" | "sql" | "yaml"

Output format

count
optionaldefault: 10
number

Number of records

constraints
optional
string

e.g. "age 18-65, email unique"

include_edge_cases
optionaldefault: true
boolean

Include nulls, boundaries, special chars

Returns

{ format, record_count, data, edge_cases_included[], notes }
📊parse_test_results

Analyse JUnit XML, TestNG, Allure JSON, or plain text test output. Returns failure root causes and recommended actions.

Parameters

results
required
string

Raw test results content

format
optionaldefault: "auto"
"auto" | "junit-xml" | "testng-xml" | "allure-json" | "plain"

Results format

Returns

{ summary{total,passed,failed,pass_rate}, failures[], flaky_tests[], patterns[], overall_health, recommended_actions[] }
🐛generate_bug_report

Turn a rough bug description into a professional JIRA-ready bug report with severity, impact, and root cause hypothesis.

Parameters

description
required
string

What went wrong

environment
optional
string

Browser, OS, app version, environment

steps_to_reproduce
optional
string

Known reproduction steps

severity
optional
"critical" | "high" | "medium" | "low"

Suggested severity

Returns

{ title, severity, priority, steps_to_reproduce[], expected_result, actual_result, impact, jira_ready }
🔍find_test_gaps

Compare a feature spec against existing test cases to find untested scenarios and coverage score.

Parameters

feature_spec
required
string

Feature specification or requirements

existing_tests
required
string

Existing test case titles or descriptions

Returns

{ coverage_score, covered_areas[], gaps[]{area,risk,description,suggested_test}, missing_test_types[], priority_gaps[], recommendation }
⏱️estimate_qa_effort

Estimate QA effort in person-days broken down by activity, with sprint fit assessment and risk factors.

Parameters

feature_description
required
string

Feature or sprint scope

team_size
optionaldefault: 1
number

Number of QA engineers

automation_coverage_target
optionaldefault: 70
number

Target automation % (0-100)

sprint_duration_days
optionaldefault: 14
number

Sprint length in days

Returns

{ total_effort_days, breakdown{}, fits_in_sprint, risks[], assumptions[], automation_candidates[] }
📋generate_test_plan

Generate a formal test plan with strategy, scope, entry/exit criteria, risks, environments, and sign-off checklist.

Parameters

project_description
required
string

What the project does

scope
required
string

Features in scope for testing

tech_stack
optional
string

Technology stack

timeline
optional
string

Testing timeline or sprint dates

Returns

{ objective, scope{in/out}, test_strategy, entry_criteria[], exit_criteria[], environments[], risks[], sign_off_checklist[] }
🎯generate_interview_questions

Generate targeted QA interview questions with evaluation guidance, red flags, and a must-ask shortlist.

Parameters

role
required
string

Job role e.g. "SDET", "QA Lead"

seniority
required
"junior" | "mid" | "senior" | "lead" | "architect"

Seniority level

focus_areas
optional
string

Specific skills to probe

count
optionaldefault: 15
number

Number of questions

Returns

{ questions[]{id,category,question,what_to_look_for,red_flags,difficulty}, must_ask[], evaluation_rubric }
⚡evaluate_prompt

Score an LLM prompt across 6 quality dimensions with an improved version and priority fixes.

Parameters

prompt
required
string

The system prompt or full prompt to evaluate

Returns

{ overallScore, grade, scores[]{dimension,score,rationale,suggestion}, strengths[], topFixes[], improvedPrompt }
🔬evaluate_rag_output

Evaluate a RAG pipeline output across 4 RAGAS-style metrics with hallucination detection.

Parameters

question
required
string

Original user question

context
required
string

Retrieved context chunks

answer
required
string

LLM-generated answer to evaluate

Returns

{ overallScore, hallucinationFlag, hallucinationDetails, scores[]{metric,score,rationale,detail}, suggestions[] }
👤analyze_qa_candidate

Analyse a QA resume and return a hiring signal, 8-dimension skill radar, strengths, gaps, red flags, and tailored interview questions.

Parameters

resume_text
required
string

Plain text extracted from resume

role
optional
string

Role being hired for

seniority
optional
string

Expected seniority

Returns

{ hiring_signal, overall_score, radar{automation,api_testing,...}, tools_detected[], strengths[], gaps[], red_flags[], interview_questions[], executive_summary }
🚨generate_postmortem

Generate a blameless incident postmortem with root cause analysis, timeline, and prioritised action items.

Parameters

incident_description
required
string

What happened

timeline
optional
string

Events with timestamps

impact
optional
string

Users/services affected

team
optional
string

Team involved

Returns

{ title, severity, summary, timeline[], root_cause, contributing_factors[], impact{}, what_went_well[], action_items[]{action,priority,due} }
📝analyze_logs

Parse application/server logs and return grouped errors with root cause hypotheses, patterns, and recommended fixes.

Parameters

logs
required
string

Raw log content

context
optional
string

Application or service name

Returns

{ summary, error_count, warning_count, errors[]{message,count,root_cause_hypothesis,suggested_fix}, patterns[], recommended_actions[] }