qai-consultant-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| retrieve_qa_knowledgeA | Retrieve grounding chunks from the local QA knowledge base (Markdown guides: testing methodologies, IEEE/ISO/OWASP Markdown standards, audit/evaluation frameworks, AI-SDLC case studies, the EU AI Act). NOT included: the ISTQB and OWASP PDF syllabi (licensing) - so fundamentals such as test design techniques (boundary value analysis), smoke vs sanity or test levels are often absent; the first call after server start may take ~30s while the index builds (usually done in the background by then). Returns {"chunks": [{"source", "category", "text", "score", "match"}], "kb_version", "best_score", "low_relevance"[, "note"][, "warnings"]}; "match" is strong (score >=0.55 AND the chunk contains most of the query's content terms), moderate (>=0.40) or weak, and when even the best chunk is not strong a note says to use only chunks that really answer the question (a 0.45 hit on an unrelated case study is vocabulary overlap). A query that names a source the KB does not ship (e.g. ISTQB) gets a note saying so; an out-of-range k is clamped and reported in "warnings". Chunks scoring below min_score (cosine similarity, default 0.40, 0 disables) are dropped; if nothing reaches it, chunks is empty, low_relevance is true and note says so - then answer from your own knowledge and tell the user the KB had no match (best_score shows how close the best miss was). Near-duplicate overlapping chunks of one document are collapsed. category, if given, must be one of: Standard, Methodology, Article, Expert Knowledge, Audit/Evaluation; an empty query, an unrecognized category or an out-of-range min_score returns a structured {"error": "invalid_argument", ...} rather than raising. k is clamped to [1, 20]. |
| list_kb_sourcesA | List every document in the knowledge base, grouped by category. Returns {"categories": {category: [{"source", "title"}]}, "kb_version", "doc_count"}. |
| estimate_qa_effortA | Deterministic QA effort estimate (PERT + complexity multipliers + team capacity + confidence score) — no LLM narrative; write your own from these numbers. Fields mirror the app's project-intake dialogue and are validated with the same rules; a validation failure returns {"error": "validation", "fields": {field: message}}, never a crash; all eleven fields are needed, and a missing or empty one is reported by name in that same shape Success returns the full EstimationData as JSON (baseline, multipliers, pert_activities, capacity, risk_buffer_days, final_effort_min/max, confidence_level/confidence_score, confidence_note, data_quality_score out of data_quality_max=20). Negative team sizes and negative or zero timelines are rejected with a validation error; decimal team sizes ("2.5") are rounded half up to a whole headcount with a warning. capacity_gap = available_person_days - pert_total_expected, so POSITIVE is a surplus and NEGATIVE a deficit; capacity_status ("surplus"/"deficit"/"balanced") and capacity_note state this unambiguously. methodology_note is set only when the methodology does not change the numbers (it is then a label only). |
| review_qa_documentA | Deterministically review an existing QA document (Test Plan, Test
Strategy, or a test case list) against a six-dimension ISTQB/IEEE-829-
grounded rubric (structure completeness, objectives & scope clarity,
entry/exit criteria, traceability, measurability, risk coverage) — no
LLM anywhere in this call path; write your own narrative from the
returned findings. doc_type must be one of "auto", "test_plan",
"test_strategy", "test_cases" — "auto" runs a cheap heading-keyword
classifier and reports which type it assumed; an unrecognized value
returns a structured {"error": "invalid_argument", ...} rather than
raising. Documents under ~200 characters (after stripping this app's own
AI-disclosure front matter/footer) return doc_type="insufficient_content"
with overall_score=0 rather than an error, unless they carry an explicit QA
signal (test plan/strategy/case wording, "Test N:" lines) and enough words
to score — those get a (low) score with findings. In "auto" mode a weak
but genuine QA document (a QA signal plus a core testing term) is scored as
its most likely type instead of being rejected. Rejections carry a |
| assess_qa_maturityA | Deterministically assess QA process maturity from a free-text project/
process description (or a pasted existing Test Strategy/Risk Register) —
no LLM anywhere in this call path; write your own narrative from the
returned findings. Scores 10 TMMi process areas (Level 2 Managed + Level 3
Defined) and returns an indicative_tmmi_level (1-3 — NEVER higher; Levels
4-5 require quantitative evidence a text description cannot substantiate,
per TMMi's own no-skip rule — always read the returned |
| analyze_test_resultsA | Deterministic test-results health metrics (flaky / ever-failing /
never-run / slowest / failure clustering) from real test execution
data — no LLM anywhere in this call path; write your own narrative
from the returned numbers. Provide exactly one of junit_xml or
csv_text. junit_xml is normally one JUnit XML report string for one
run (accepts both a and a bare root); to
analyze flakiness across MULTIPLE runs in one call, pass a JSON array
of {"run_id": "...", "xml": "..."} objects
(or simply a JSON array of XML strings, auto-named run-1, run-2, ...;
repeated run_ids are kept as separate runs with a #2/#3 suffix and a
warning) instead — either as a genuine JSON array/list argument, or as a string
starting with "[" (some MCP clients stringify array arguments; both
forms are accepted). csv_text needs a test-name column (name | test_name
| test | testcase | title) and a status column (status | result |
outcome); headers are matched case-insensitively. Status synonyms are
accepted (pass/ok/success, fail/failure/ko, error/err,
skip/ignored/pending). Optional columns: classname (or suite), run_id
(or run/build; default "csv"), duration_s (or duration/time/elapsed, in
seconds; a *_ms header or "350ms" values mean milliseconds), message
(or error/details). Dropped rows and unrecognised columns are listed in
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| qa_project_interview | The 11-question project-intake interview to run before any QA deliverable. |
| risk_register_structure | The Risk Register document structure and grounding instructions (optional project_name fills the title). |
| test_strategy_structure | The Test Strategy document structure and grounding instructions (optional project_name fills the title). |
| test_plan_structure | The IEEE-829-aligned Test Plan document structure and grounding instructions (optional project_name fills the title). |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
The four analytical tools (estimate_qa_effort, review_qa_document, analyze_test_results, assess_qa_maturity) each target a clearly different input and output, so misselection is unlikely. The only mild overlap is the knowledge-base pair — list_kb_sources (catalog of shipped documents) vs retrieve_qa_knowledge (semantic chunk retrieval) — but the descriptions make the catalog-vs-search split explicit.
Every name follows a strict snake_case verb_noun pattern: list_kb_sources, retrieve_qa_knowledge, estimate_qa_effort, review_qa_document, analyze_test_results, assess_qa_maturity. Verbs are distinct (list/retrieve/estimate/review/analyze/assess) and nouns name the resource acted on.
Six tools sit comfortably in the well-scoped range, and each covers a separate consulting activity: KB discovery, KB retrieval, effort estimation, document review, test-result analysis, and maturity assessment. No tool looks redundant or bolted on.
The surface covers the advisory lifecycle well — ground knowledge, estimate, review artifacts, analyze execution data, assess maturity — with no dead-end workflows for a read-only consultant role. Gaps remain: no tool to generate or draft QA artifacts (test plans, cases, risk registers), and list_kb_sources is a thin companion to retrieval.