MCP server bridging specs (Linear / JIRA / GitHub Issues / Notion / Markdown / Figma) to tests, with bidirectional traceability and a spec-quality coach (AI 規格大師)
Project description
MK Spec Master
AI 規格大師 — specs in, scenarios out. Bidirectional traceability so you always know what's tested.
English · 繁體中文
Spec-driven testing over MCP. Turn Linear / JIRA / GitHub Issues / Notion / Figma / Markdown specs into runnable scenarios, hand off to any test runner via
mk-qa-master, and keep a live spec ↔ test coverage matrix.
🟢 Alpha — v0.2 partial. 11 tools shipped (coverage matrix + spec-quality coach + drift report). Full design in
docs/prd.md. Next in v0.2: Linear / JIRA adapters.
Install
uvx mk-spec-master # or: pip install mk-spec-master
Add to your MCP client config:
{
"mcpServers": {
"mk-spec-master": {
"command": "uvx",
"args": ["mk-spec-master"],
"env": {
"SPEC_SOURCE": "markdown_local",
"SPEC_PROJECT_ROOT": "/path/to/your/project"
}
}
}
}
Then in Claude / Cursor / Codex / Gemini CLI:
"Use mk-spec-master to parse SPEC-001, extract scenarios, and hand them to mk-qa-master so we can generate Playwright tests."
What this is
An MCP server that turns specs — Linear tickets, JIRA stories, GitHub Issues, Notion pages, Figma annotations, plain Markdown — into structured test scenarios, hands them to any test runner (via mk-qa-master or directly), and maintains a live spec ↔ test coverage matrix.
Sibling to mk-qa-master in the mk-* family of opinionated AI-QA MCPs.
Why this is missing from the ecosystem
| Tool | Lock-in | What we do differently |
|---|---|---|
| AWS Kiro | AWS IDE only, proprietary | MCP-native, multi-client, open source |
| Jama Connect MCP | $50k+/year, enterprise-only | SMB / indie / AI-native segment |
| GitHub Spec Kit | spec→code; runtime test coverage out of scope | We add runtime test coverage |
| testomat.io / JIRA MCPs | Single source (JIRA), SaaS lock | Multi-source, file-based index, no lock |
See docs/prd.md §4 for the full positioning.
Tool surface (v0.2 partial — 10 tools)
| Tool | Since | Purpose |
|---|---|---|
get_spec_source_info |
v0.1 | Active adapter + all available — call this first |
list_specs |
v0.1 | Enumerate specs from the active source (filter by status / label / limit) |
fetch_spec |
v0.1 | Pull a single spec's full content by id |
parse_spec |
v0.1 | Heuristic AC extraction (en + zh-TW + zh-CN headings supported); accepts spec_id or raw_text |
extract_scenarios |
v0.1 | AC → scenarios with happy / edge / error classification (negation-aware) and best-effort Given/When/Then split |
generate_test_plan |
v0.1 | One-shot fetch + parse + extract → markdown plan ready to feed to mk-qa-master.generate_test(business_context=...) |
link_test_to_spec |
v0.1 | Record that a test verifies a spec (writes to SPEC_PROJECT_ROOT/.mk-spec-master/index.json). v0.2: caches title / source / url for the matrix |
get_coverage_matrix |
v0.2 | Spec × test grid — answer "which specs have no tests" in one call |
analyze_spec_quality |
v0.2 | Heuristic coach — flags vague language, implementation-leak AC, unclear role refs (the differentiator vs Kiro / Spec Kit) |
propose_spec_improvements |
v0.2 | Take analyze output → PM-facing markdown with concrete rewrites |
get_drift_report |
v0.2.1 | For every spec with a stored ac_hash, fetch live + recompute + compare. Buckets results into fresh / drifted / unknown / stranded |
Still pending for full v0.2: Linear / JIRA adapters.
Adapter status
SPEC_SOURCE |
Source | Status | Auth |
|---|---|---|---|
markdown_local |
Local *.md with YAML-ish frontmatter |
✅ since 0.1.0 | none |
github_issues |
GitHub Issues via gh CLI |
✅ since 0.1.0 | gh auth login or GITHUB_TOKEN |
linear |
Linear API (GraphQL) | ✅ since 0.2.2 | LINEAR_API_KEY + SPEC_PROJECT_KEY=<team-key> (optional) |
jira |
JIRA Cloud / Server | ⏳ pending — v0.2.x | JIRA_API_TOKEN + JIRA_BASE_URL |
notion |
Notion databases | ⏳ planned — v0.3 | NOTION_TOKEN |
figma |
Figma annotations + comments | ⏳ planned — v0.3 | FIGMA_TOKEN |
v0.2.0 shipped the coverage matrix + spec-quality coach. v0.2.1 added drift report. v0.2.2 adds the Linear adapter. JIRA follows in 0.2.3.
Walkthrough — spec → test → coverage
Given a Linear ticket LIN-123 "Apply discount at checkout" with 4 acceptance criteria:
You: Use mk-spec-master to fetch LIN-123, extract scenarios, generate
Playwright tests with mk-qa-master, run them, and report coverage.
The AI client chains:
mk-spec-master.fetch_spec("LIN-123")
mk-spec-master.parse_spec(spec_id="LIN-123") → 4 AC
mk-spec-master.extract_scenarios(...) → 1 happy + 3 error
mk-spec-master.generate_test_plan(spec_id="LIN-123")
for scenario in plan:
mk-qa-master.generate_test(business_context=scenario.gherkin)
mk-spec-master.link_test_to_spec(spec_id="LIN-123", test_node_id=...)
mk-qa-master.run_tests
The traceability index now records all 4 links. Next sprint, when the spec changes, get_drift_report (v0.2) will flag tests that may be stale.
Status
| Milestone | Target | Status |
|---|---|---|
| v0.1 (MVP — markdown_local + github_issues, 7 tools) | June 2026 | ✅ Shipped |
| v0.2 (Linear, JIRA, coverage matrix, spec-quality coach, drift report) | Aug 2026 | 🟡 Coverage matrix + coach + drift report + Linear shipped (0.2.2); JIRA pending |
| v0.3 (Notion, Figma, auto-link, optimization plan) | Oct 2026 | ⬜ |
| v1.0 (production-ready, docs, integration recipes) | Q4 2026 | ⬜ |
Family
mk-qa-master— AI 測試大師, the test-runner sibling. Tests run via mk-qa-master; coverage tracked here.- More
mk-*MCPs in design (mk-perf-master,mk-a11y-master).
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mk_spec_master-0.2.2.tar.gz.
File metadata
- Download URL: mk_spec_master-0.2.2.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47a52ccf0ef83bfd09d7537de82a8d617c8d8371c4ea078f046e8b79f0352441
|
|
| MD5 |
751e2f61ab73c25a0f93843831b96b58
|
|
| BLAKE2b-256 |
73b16e4aa4b88195979ccfb0a46a92b12e5c6439f3a4a0f0c3d7993b7eec6335
|
Provenance
The following attestation bundles were made for mk_spec_master-0.2.2.tar.gz:
Publisher:
publish.yml on kao273183/mk-spec-master
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mk_spec_master-0.2.2.tar.gz -
Subject digest:
47a52ccf0ef83bfd09d7537de82a8d617c8d8371c4ea078f046e8b79f0352441 - Sigstore transparency entry: 1549187598
- Sigstore integration time:
-
Permalink:
kao273183/mk-spec-master@6a43622afa4bb59c1fd90304e3dbdd1081d6f734 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/kao273183
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6a43622afa4bb59c1fd90304e3dbdd1081d6f734 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mk_spec_master-0.2.2-py3-none-any.whl.
File metadata
- Download URL: mk_spec_master-0.2.2-py3-none-any.whl
- Upload date:
- Size: 32.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
818ad971ac889cb60d0a3905289ead070952ecab79d3222b59797fef5f265a88
|
|
| MD5 |
dbb1d167e65a2870cc3adfa6b55158db
|
|
| BLAKE2b-256 |
345af6f8fca60999babdfe68b3da149848e5f868884e7597be3e36996390f50b
|
Provenance
The following attestation bundles were made for mk_spec_master-0.2.2-py3-none-any.whl:
Publisher:
publish.yml on kao273183/mk-spec-master
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mk_spec_master-0.2.2-py3-none-any.whl -
Subject digest:
818ad971ac889cb60d0a3905289ead070952ecab79d3222b59797fef5f265a88 - Sigstore transparency entry: 1549187951
- Sigstore integration time:
-
Permalink:
kao273183/mk-spec-master@6a43622afa4bb59c1fd90304e3dbdd1081d6f734 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/kao273183
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6a43622afa4bb59c1fd90304e3dbdd1081d6f734 -
Trigger Event:
release
-
Statement type: