mk-spec-master
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| JIRA_EMAIL | No | Email for JIRA authentication. Required if SPEC_SOURCE=jira. | |
| FIGMA_TOKEN | No | API token for Figma adapter. Required if SPEC_SOURCE=figma. | |
| SPEC_SOURCE | No | The adapter to use (e.g., markdown_local, linear, jira, notion, figma, github_issues). Required. | |
| GITHUB_TOKEN | No | GitHub token for GitHub Issues adapter. Optional if gh CLI is authenticated. | |
| NOTION_TOKEN | No | API token for Notion adapter. Required if SPEC_SOURCE=notion. | |
| JIRA_BASE_URL | No | JIRA base URL (e.g., https://your-domain.atlassian.net). Required if SPEC_SOURCE=jira. | |
| JIRA_API_TOKEN | No | API token for JIRA authentication. Required if SPEC_SOURCE=jira. | |
| LINEAR_API_KEY | No | API key for Linear adapter. Required if SPEC_SOURCE=linear. | |
| SPEC_PROJECT_KEY | No | Project key or identifier (e.g., team key for Linear, project key for JIRA, database ID for Notion, file key for Figma). Optional for Linear and JIRA, required for Notion and Figma. | |
| SPEC_PROJECT_ROOT | No | Root path of the project. The traceability index is stored at SPEC_PROJECT_ROOT/.mk-spec-master/index.json. Required. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_spec_source_infoA | Return the active spec source (selected via SPEC_SOURCE env var) plus all adapters built into this server. Call first in any session so the AI knows whether to expect markdown / GitHub / (future) Linear / JIRA / Notion semantics. Returns {active, available, version}. |
| list_specsA | Enumerate specs from the active source. For markdown_local this globs SPEC_PROJECT_ROOT/specs/*.md and reads YAML frontmatter; for github_issues it queries the configured owner/repo (set via SPEC_PROJECT_KEY). Optional filters: status (string — adapter-specific: 'in-progress' for markdown, 'open'|'closed'|'all' for GitHub), label (string), limit (int, default 50). Returns {source, count, specs[]}. |
| fetch_specA | Pull a single spec by id from the active source. For markdown_local the id is either the |
| parse_specA | Extract structured acceptance criteria from a spec body. Looks for headings matching 'Acceptance criteria' / 'AC' / '驗收條件' / '驗收標準' (case-insensitive, en + zh-TW + zh-CN) and pulls numbered or bulleted items beneath. Pass |
| extract_scenariosA | Turn parsed acceptance criteria into testable scenarios. Each scenario is classified as happy / edge / error via keyword heuristics, and split into Given / When / Then where possible. Pass the |
| generate_test_planA | One-shot: fetch + parse + extract for a spec, then emit a markdown test plan with a |
| link_test_to_specA | Record that a test verifies a spec. Writes into SPEC_PROJECT_ROOT/.mk-spec-master/index.json (data ownership stays with the user). Re-linking the same node_id updates the timestamp instead of duplicating. Call this right after mk-qa-master.generate_test returns a node_id so the coverage matrix stays current. Pass |
| get_coverage_matrixA | Snapshot of every spec ↔ test link recorded in the local index. Returns both structured rows and a ready-to-paste markdown table — call this when a user asks 'what's tested' or 'which specs have no tests'. Filters: |
| get_drift_reportA | For every spec in the index that has a stored ac_hash, fetch the live spec via the active adapter and recompute its ac_hash to detect drift. Buckets the results into fresh (no drift), drifted (linked tests may be stale), unknown (no hash stored — re-link with ac_hash from parse_spec._meta.ac_hash to enable), and stranded (spec_id can no longer be fetched — deleted, closed, or source mismatch). Use when a user asks 'has anything changed' / 'what's out of sync' / 'is my test suite still aligned with specs'. Optional |
| analyze_spec_qualityA | Run heuristic checks against a spec's body: vague language without measurable thresholds (fast / easy / intuitive / 現代 / 順暢 ...), implementation-detail leakage in AC ('uses Redis', '透過 X 服務'), and references to roles ('logged-in user', '管理員') without a Preconditions section. Pass |
| propose_spec_improvementsA | Take analyze_spec_quality output and produce a PM-facing markdown coach plan grouping findings by spec and issue type, with concrete rewrite suggestions per finding. If |
| auto_link_testsA | Scan a directory of test files for |
| get_optimization_planA | Three-layer coach output that integrates coverage / quality / drift signals into one prioritized markdown plan. Layer 1 surfaces untested + thin-coverage specs; Layer 2 ranks specs by severity-weighted quality findings; Layer 3 surfaces drifted + stranded specs. Use this when a user asks 'what should we fix next' / 'show me the weekly plan' / 'review the suite'. Toggle layers via include_coverage / include_quality / include_drift booleans (all default true). top_n caps per-layer detail rows (default 10). Returns {specs_total, *_count, *[], markdown}. |
| init_spec_knowledgeA | Create SPEC_PROJECT_ROOT/spec-knowledge.md from a starter template. The file carries spec methodology (EARS, INVEST, AC quality rules) plus TODO sections for the team's domain rules / actors / glossary. Other mk-spec-master tools lean on this indirectly via get_spec_context. Idempotent — refuses to overwrite an existing file unless overwrite=true. Optional project_name labels the file. |
| get_spec_contextA | Read SPEC_PROJECT_ROOT/spec-knowledge.md (or fall back to built-in defaults if missing). Call near the start of a session so the same methodology + domain glossary colours every spec interpretation that follows. Optional |
| get_spec_historyA | Return the last N snapshots archived by get_optimization_plan plus trend deltas (current vs ~7 days ago, vs ~30 days ago) for spec count, untested, quality findings, drift, stranded, and unknown-hash specs. Use when a user asks 'are we improving' / 'show me the trend' / 'how did we do this month'. Requires at least 2 snapshots for trend; degrades gracefully with fewer. Returns {snapshots_total, snapshots[], trend[], markdown}. |
| get_drift_signatureA | Scan the recent snapshot history for chronic problems: same spec_id repeatedly appearing in drifted / unknown / low-quality buckets. Specs flagged as 'unstable' (drifts every cycle), 'chronic_low_quality' (vague every cycle), or 'chronic_unhashed' (never gets a hash recorded). Use when a user asks 'which specs keep causing trouble' / 'what's the long-running pain'. Args: window (snapshots to scan, default 5), threshold (min recurrence to flag, default 3). Returns {ready, snapshots_scanned, chronic[], markdown}. |
| get_telemetryA | Aggregate the tool-usage log written by this server. Surfaces: which tools are called most, which fail most (error rate), p50 / p95 latency per tool, and which declared tools have never been called in the window (dead surface). Records contain only tool name + timing + ok flag — argument values are never logged. Use when a user asks 'what's the AI actually using' / 'which tools are slow' / 'which tools are unused'. Args: days (window, default 30), include_inactive (bool, default true). Returns {records_total, window_days, tools[], inactive[], markdown}. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/kao273183/mk-spec-master'
If you have feedback or need assistance with the MCP directory API, please join our Discord server